我创建了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"
),
));
Ouput看起来像这样:
‹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请求。
答案 0 :(得分:1)
简单地说,您必须从CURLOPT_HTTPHEADER数组中删除"Accept-Encoding: gzip"
。
如果仍然无效,请使用gzdecode()
函数
$original_output= gzdecode($curl_output);
要解决内容长度问题,您必须计算已经计算并存储在$contentlength
变量中的帖子数据的字符串长度。
"Content-Length:".$contentlength
答案 1 :(得分:0)
curl_setopt($curl, CURLOPT_ENCODING , "gzip");
将正确显示结果