SOAP ソリューションで問題が発生しています。時々、次のようなエラーが表示されます。
Function (functionA) is not a valid method for this service
編集 8 か月後 問題の原因は特定できませんでしたが、回避できました。APIから応答を受け取るたびに、SoapFaultをチェックし、別の同じ要求を送信して、2回目に返された回答を使用します.(回答として投稿)
これは、次のような PHP からの呼び出しで発生します。
functionA() - expected response
functionA() - expected response
functionA() - SoapFault
functionA() - expected response
上記のすべての呼び出しで同じ結果が期待され、同じパラメーターが使用されます (存在する場合)。ほとんどすべての呼び出しで正常に機能しているため、関数と対応する WSDL がそこにあることがわかります。
私が問題だと思ったのは、その機能を持たない古いバージョンをキャッシュすることでした。私はキャッシングを無効にしようとしました:
ini_set("soap.wsdl_cache_enabled", "0");
Zend_SoapClient を使用するときは、すべての呼び出しにランダムなダミー パラメータを追加し、それを無効にします。
'cache_wsdl' = false
誰かが私を何らかの方向に向けるか、何が原因であるかについて直接的な提案をしてくれることを願っています.
私のコードは次のようになります:
public function __construct()
{
$wsdl = "http://catlovers.nl/index.php?wsdl&dummy=".rand(1000,9999);
$this->_client = new Zend_Soap_Client($wsdl, array(
'soapVersion' => SOAP_1_1,
'cache_wsdl' => false
));
$this->_client->setWsdlCache(false);
}
function __call($name, $arguments) // Calls are made this way
{
array_unshift($arguments, $this->_apiKey, $this->_user, $this->_password);
return call_user_func_array(array($this->_client, $name), $arguments);
}
public function getCat()
{
return ($this->__call('getCat',array()));
}
「反対側」で私は持っています:
$server = new nusoap_server();
$server->wsdl->addComplexType('Cat', ....
$server->register( 'getCat', return Cat ...
function getCat($apikey, $email, $password)
{
$cat = $db->get("redCat");
return $cat;
}