Unix curl到php curl convertion

时间:2017-10-20 08:37:26

标签: php json bash curl

我有以下bash curl命令,它返回我想要的api结果

 curl -v -H 'Accept-Encoding:gzip,deflate,sdch' http://api.blabla.com?search_id=my_id --compressed

我正在为此API编写PHP sdk,但我无法将此curl命令转换为php curl。

这是我到目前为止所尝试的:

curl_setopt($ch1, CURLOPT_URL, $resultsURL);
curl_setopt($ch1, CURLOPT_HTTPHEADER, 'Connection: Keep-Alive');   
curl_setopt($ch1, CURLOPT_ENCODING, 'gzip,deflate');
curl_setopt($ch1, CURLOPT_CONNECTTIMEOUT, 0); 
curl_setopt($ch1, CURLOPT_TIMEOUT, 15); // number of seconds to allow curl to execute

$results = curl_exec($ch1);
echo(json_encode($results));
curl_close($ch1);

我得到了一些结果但是它们不一致。通常的反应是大约9MB的json(来自cli curl),我得到的东西从1.46KB到900KB。所有这些都发生在同一个api电话上......

此代码有什么问题,或者我怎样才能完成此操作?我对它没有想法

编辑:经过长时间的调试我发现bash curl和php curl发送相同的请求,它必须是服务器(在我的情况下为apache)错误,它不能取回一切给我在回应中。

我会再次编辑并在找到exaclty时发布答案。

1 个答案:

答案 0 :(得分:0)

php curl manualCURLOPT_ENCODING

  

" Accept-Encoding的内容:"头。这使得能够解码   的回应。支持的编码是" identity"," deflate",和   " gzip的&#34 ;.如果设置了空字符串"",则包含全部的标题   发送支持的编码类型。

所以在那里使用空来支持任何编码。

curl_setopt($ch1, CURLOPT_ENCODING, '');