为什么卷曲时间不起作用

时间:2013-11-19 18:22:00

标签: php curl nusoap

我正在开发此应用程序(使用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;

有没有办法强制只在收到回复时停止?

任何帮助都非常感谢,我已经打了几个星期。

谢谢。

2 个答案:

答案 0 :(得分:2)

在设置选项后,你永远不会对你的curl句柄($ch)做任何事情 - nusoap客户端对象不知道它,所以它没有效果。

尝试使用setCurlOption中的nusoap_client方法 - 这实际上应该具有您想要的效果。

答案 1 :(得分:0)

安德鲁我尝试了以下内容并且工作了......

$client->setCurlOption(CURLOPT_CONNECTTIMEOUT, 60);
非常感谢你。