我试图通过远程主机上的https调用WS:远程端口,我得到:



使用PHP5 SoapClient;我可以通过执行$client->__getFunctions()来获取函数列表,但是当我调用$client->myFunction(...)时,总是会遇到此错误。

我已经在google上搜索,发现在php.ini中增加default_socket_timeout应该可以解决它,但是没有用。

谁能建议我一个解决方案?

编辑:这是代码:

$wsdl="myWSDL";

$client = new SoapClient($wsdl,array('connection_timeout'=>5,'trace'=>true,'soap_version'=>SOAP_1_2));

var_dump($client->__getFunctions());

try {
    $response=$client->myFunction("1","2","3");
         } catch (SoapFault $fault) {
    var_dump($fault);
    }
}

总是以错误结尾。

我该如何解决这个问题?

最佳答案

当SOAP响应超出default_socket_timeout值时,通常会看到此错误。 (See this link。)

从SoapClient构造函数中注意到:connection_timeout选项用于定义连接到服务的超时值,而不是用于其响应的超时。

您可以像这样增加它:

ini_set('default_socket_timeout', 600); // or whatever new value you want

这应该告诉您超时是否是问题所在,或者您是否有其他问题。请记住,您不应将用作永久解决方案,而应在继续调查SOAP服务为何响应如此缓慢之前先查看它是否摆脱了错误。如果服务持续缓慢,则可能需要考虑脱机/批处理。

10-08 14:32