Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix curl到php curl的转换_Php_Json_Bash_Curl - Fatal编程技术网

Unix curl到php curl的转换

Unix curl到php curl的转换,php,json,bash,curl,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编写一个PHPSDK,但是我不能将这个curl命令转换成PHPCurl 这就是我迄今为止所尝试的: curl_setopt($ch1, CURLOPT_URL, $resultsURL); curl_setopt($ch1

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

 curl -v -H 'Accept-Encoding:gzip,deflate,sdch' http://api.blabla.com?search_id=my_id --compressed
我正在为这个API编写一个PHPSDK,但是我不能将这个curl命令转换成PHPCurl

这就是我迄今为止所尝试的:

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)的错误,它没有在响应中将所有内容返回给我

我将再次编辑并在找到确切答案后发布答案。

php curl表示用于
CURLOPT\u编码

“接受编码:”标题的内容。这使得解码成为可能 对答复的答复。支持的编码有“identity”、“deflate”和“deflate” “gzip”。如果设置了空字符串“”,则将显示包含所有 已发送支持的编码类型

因此,在那里使用empty来支持任何编码

curl_setopt($ch1, CURLOPT_ENCODING, '');

您对
curl\u exec()
有3个不同的调用,是实际代码还是示例代码?请尝试设置@Flying否,这是错误的,我运行的代码中有一个exec。@GeorgeSp为什么使用
json\u encode()
作为响应?我想应该是
json_decode()
还有@kerbholz的建议应该对你有用我试过了,但似乎没有解决问题。一定是你使用的API有问题。我在bash和php脚本上测试了curl,得到了相同的结果。下面是一个带有我使用的PHP代码的粘贴库: