您好我正在尝试执行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