在我的情况下是否需要解码 curl 结果?
is it required to decode curl result in my case?
我创建了 php curl 来发送 xml 请求,看起来登录有效。因为如果登录详细信息有任何错误,则会显示错误。但如果一切正常,那么它会给出一些垃圾值的响应:
来源主要代码:
$contentlength=strlen($postdata);
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL =>$this->url ,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_0,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "$postdata",
CURLOPT_HTTPHEADER => array(
"Content-Type: text/xml;charset=utf-8",
"Content-Length: 839",
"Accept: text/xml",
"Accept-Encoding: gzip",
"Authorization : $Authorization",
"User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.11) Gecko/20071204 Ubuntu/7.10 (gutsy) Firefox/2.0.0.11",
"Host: $host",
"Connection: close"
),
));
输出如下所示:
‹d1oÂ0…÷üŠS–,Û)J›ÈuèÔ"$–²šäH£Æv°MUþ}MÒ€J·»{ŸŸï_}«¾ÐºÖèeÂæ4Ô•©[Ý,““?¤OÉJDÜ¢ëv¸ïLõyåã‡yþ‹ Ç:oñ€6 x
怎么了?我应该解码什么吗?如果是,那么我需要在哪个 forgat 中调试。我使用 securetrading.com 站点发送 xml 请求。
curl_setopt($curl, CURLOPT_ENCODING , "gzip");
将正确显示结果
简单地说,您必须从 CURLOPT_HTTPHEADER 数组中删除 "Accept-Encoding: gzip"
。
如果仍然无法正常工作,请使用 gzdecode()
函数
解压缩输出
$original_output= gzdecode($curl_output);
为了解决内容长度问题,您必须计算 post 数据的字符串长度,您已经计算并存储在 $contentlength
变量中。
"Content-Length:".$contentlength
我创建了 php curl 来发送 xml 请求,看起来登录有效。因为如果登录详细信息有任何错误,则会显示错误。但如果一切正常,那么它会给出一些垃圾值的响应:
来源主要代码:
$contentlength=strlen($postdata);
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL =>$this->url ,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_0,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "$postdata",
CURLOPT_HTTPHEADER => array(
"Content-Type: text/xml;charset=utf-8",
"Content-Length: 839",
"Accept: text/xml",
"Accept-Encoding: gzip",
"Authorization : $Authorization",
"User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.11) Gecko/20071204 Ubuntu/7.10 (gutsy) Firefox/2.0.0.11",
"Host: $host",
"Connection: close"
),
));
输出如下所示:
‹d1oÂ0…÷üŠS–,Û)J›ÈuèÔ"$–²šäH£Æv°MUþ}MÒ€J·»{ŸŸï_}«¾ÐºÖèeÂæ4Ô•©[Ý,““?¤OÉJDÜ¢ëv¸ïLõyåã‡yþ‹ Ç:oñ€6 x
怎么了?我应该解码什么吗?如果是,那么我需要在哪个 forgat 中调试。我使用 securetrading.com 站点发送 xml 请求。
curl_setopt($curl, CURLOPT_ENCODING , "gzip");
将正确显示结果
简单地说,您必须从 CURLOPT_HTTPHEADER 数组中删除 "Accept-Encoding: gzip"
。
如果仍然无法正常工作,请使用 gzdecode()
函数
$original_output= gzdecode($curl_output);
为了解决内容长度问题,您必须计算 post 数据的字符串长度,您已经计算并存储在 $contentlength
变量中。
"Content-Length:".$contentlength