Unix curl到php curl的转换
我有下面的bash curl命令,它返回我想要的api结果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
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代码的粘贴库: