我正在开发这个应用程序,它连接(使用NUSOAP)到web服务以检索内容。当我向web服务提交XML时,我连接了,但响应需要30秒以上的时间才能回复。我尝试了几次更改,但脚本仍然在30秒结束,并显示以下消息(来自Nusoap对象):cURL错误:28:操作在30015毫秒后超时,收到0个字节的
这是我正在使用的代码(部分):
$ch = curl_init();
curl_setopt($ch, CURLOPT_TIMEOUT, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60);
$client = new nusoap_client ( $this->getCreditcheckUrl(), true,false, false, false, false, 0, 300);
$client->soap_defencoding = 'utf-8';
$client->decode_utf8 = false;
$client->operation = 'contentOrder';
$client->useHTTPPersistentConnection (); // Uses http 1.1 instead of
// 1.0
$client->setUseCurl ( true );
$client->loadWSDL ();
$client->portName = "PrepareOrderPort";
$client->setCredentials ( "", "", "certificate", array (
// "cainfofile" => $sslPath . $caPath , //OPTIONAL
"sslcertfile" => self::sslPath . self::sslcert,
"sslkeyfile" => self::sslPath . self::sslcert,
"passphrase" => "xxxxxxxxx",
"certpassword" => "xxxxxxxx", // OPTIONAL
"verifypeer" => False, // OPTIONAL
"verifyhost" => 1 // OPTIONAL
) );
$client->send($xmlRequest);
$contentRaw = $client->responseData;
有没有一种方法可以强制它只在得到回应时停止?
我们非常感谢您的帮助,我已经为此奋斗了好几个星期了。
谢谢。
在设置了curl句柄($ch
)的选项后,您永远不会对其进行任何操作-nusoap客户端对象不知道它,因此它没有任何效果。
尝试在nusoap_client
中使用setCurlOption
方法——这实际上应该具有您想要的效果。
Andrew我尝试了以下操作,结果成功了。。。
$client->setCurlOption(CURLOPT_CONNECTTIMEOUT, 60);
非常感谢。