2014-02-20 169 views
6

我正在尝试使用Prestashop实例的图像产品更新页面。返回奇怪字符的PHP卷曲

我正在使用prestashop web服务获取信息。 问题是当我加载页面时,它向我询问prestashop的令牌/密钥,但我想使用Url和我通过CURL传递的密钥保存登录会话,而不是每次输入密钥。 然而curl_exec输出是一些奇怪的字符,如��#B��R��$3br�

这里是保存会话功能:

function saveSession($url, $key){ 

    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_USERPWD, $key.':'); 
    curl_setopt($ch, CURLOPT_ENCODING, 'gzip,deflate,sdch'); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
    $result = curl_exec($ch); 
    curl_close($ch); 
    return $result; 
} 

我不知道这个问题是与编码,头或有任何其他解决方案!?

+0

尝试将该行更改为:'curl_setopt($ x,CURLOPT_HTTPHEADER,array('Content-Type:application/x-www-form-urlencoded; charset = UTF-8'));'。 –

回答

17

那些有关响应的奇怪数据是curl无法检测到的压缩内容。

替换此:

curl_setopt($ch, CURLOPT_ENCODING, 'gzip,deflate,sdch'); 

随着:

curl_setopt($ch, CURLOPT_ENCODING, ''); 

空编码装置,以处理任何类型的编码。它应该解决你的问题。

+0

设置curl_setopt($ ch,CURLOPT_ENCODING,'');修复了一个非常奇怪的编码问题,我在curl输出看起来像插入了额外的字符,这使得检索到的XML无效。 – Baxny

+0

超级谢谢你的回答。这个对我有用。但是...什么? – bharatesh

+0

你给了我们答案。你能否也请提一下为什么会出现这样的错误以及我们如何找到原因? “你的卷曲无法检测到的压缩内容”这是什么意思?你能否请详细解释一下? – testerjoe2