Fedora上的cURL响应内容类型

时间:2014-01-21 19:48:19

标签: php apache curl

您好我正在尝试执行cURL请求,现在问题是我的内部WAMP服务器基于我用于开发的Windows 8.1操作系统上的相同请求正常工作,但是当我在实际网络上运行它时会产生问题基于Fedora OS的服务器。

以下是我要执行的cURL: -

$service_url = 'https://ct.soa-gw.canadapost.ca/ers/artifact/82aabfb71bd6a468/30819/0';

        $curl = curl_init(); // Create REST Request
        curl_setopt($curl, CURLOPT_URL, $service_url); 
        curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
        curl_setopt($curl, CURLOPT_USERPWD, $inUsername . ':' . $inPassword);
        curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "GET"); 
        curl_setopt($curl, CURLOPT_HTTPHEADER, array('Accept:application/pdf', 'Accept-Language:en-CA'));
        $curl_response = curl_exec($curl); // Execute REST Request
        if(curl_errno($curl)){
            echo 'Curl error: ' . curl_error($curl) . "\n";
        }

        echo 'HTTP Response Status: ' . curl_getinfo($curl,CURLINFO_HTTP_CODE) . "<br/>";
        echo "<br/>" . $curl_response . "<br/>";    

现在的问题是,当我在内部服务器上运行时,同样的代码会返回正确的PDF响应,并且我得到一个HTTP响应状态:200。

但是当我在Fedora中运行相同的代码时,它返回HTTP响应状态:202,实际的响应内容,即“$ curl_response”为空。

我测试了FireFox“REST Client”扩展程序中的URL,它可以正常返回HTTP响应状态:200甚至Chrome“Advanced Rest Client”应用程序正常工作,返回HTTP响应状态:200。“$ curl_response”包含PDF内容所有的时间,除非代码在Fedora上运行。

似乎代码不仅适用于Fedora,所以任何人都可以就此处的错误提出任何建议。

提前致谢。

PS: - 好的,我刚尝试了一些东西,我开始觉得在Fedora上运行时的cURL请求不是在等待响应,而是在异步模式下运行。

好的,这就是逻辑的工作方式,我执行函数A,它返回一个存储在变量“$ service_url”中的值。然后我将此变量用作cURL请求的URL(参见代码)。但后来我得到一个HTTP状态响应:202,但是过了一段时间后如果我将“$ service_url”值硬编码到创建错误的上一个URL,那么它甚至可以在Fedora上正常工作。

这是一次试运行

Test 1:-
->Executed function A()
->automated value "sampleURL" get's stored in variable "$service_url"
->Use "$service_url" as the url for cURL and execute it
->HTTP Status Response 202
->cURL content is blank





Test 2:-(After waiting sometime)
->Run the same script but this time I hardcode variable $service_url = "sampleURL";
->Use "$service_url" as the url for cURL and execute it
->HTTP Status Response 200
->cURL content is PDF content

我觉得cURL可能不会等待响应并立即返回,就像发出异步请求而不是发出同步请求一样。

这是标头输出: -

HTTP/1.1 202 Accepted Server: Oracle-iPlanet-Web-Server/7.0 
Date: Tue, 21 Jan 2014 20:27:58 GMT 
X-backside-transport: OK OK 
Transfer-encoding: chunked 
Set-cookie: CPO_SSID_PRD32_BL_CT_ERS=R332319479; path=/ 
Svn-build-number: ShippingTools.buildLevel.20140111.MR1_2014-B3838.3838 
Content-type: application/octet-stream 
HTTP Response Status: 202

0 个答案:

没有答案