我正在开发此应用程序(使用NUSOAP)连接到Web服务以检索内容。 当我将XML提交给Web服务时,我得到了连接,但响应时间超过30秒才能回复。我尝试了几次更改,但脚本仍然以30秒标记结束,并显示以下消息(来自Nusoap对象): cURL ERROR: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;
有没有办法强制只在收到回复时停止?
任何帮助都非常感谢,我已经打了几个星期。
谢谢。答案 0 :(得分:2)
在设置选项后,你永远不会对你的curl句柄($ch
)做任何事情 - nusoap客户端对象不知道它,所以它没有效果。
尝试使用setCurlOption
中的nusoap_client
方法 - 这实际上应该具有您想要的效果。
答案 1 :(得分:0)
安德鲁我尝试了以下内容并且工作了......
$client->setCurlOption(CURLOPT_CONNECTTIMEOUT, 60);
非常感谢你。