我有以下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时发布答案。
答案 0 :(得分:0)
php curl manual对CURLOPT_ENCODING
" Accept-Encoding的内容:"头。这使得能够解码 的回应。支持的编码是" identity"," deflate",和 " gzip的&#34 ;.如果设置了空字符串"",则包含全部的标题 发送支持的编码类型。
所以在那里使用空来支持任何编码。
curl_setopt($ch1, CURLOPT_ENCODING, '');