我尝试使用magento SOAP,但我收到错误“SoapFault异常:[HTTP]未知内容编码”
我使用的代码是:
function init_connector() {
global $mage_url,$mage_user, $mage_api_key, $sessionId, $proxy;
try {
$proxy = new SoapClient( $mage_url ."/api/?wsdl" ); //calling this function with no errors
// Login to Magento
$sessionId = $proxy->login( $mage_user, $mage_api_key ); //this call trigers the exception
return 1;
} catch( SoapFault $fault ) {
logError($fault);
return 0;
}
}
创建对象$ proxy时我没有错误,但是当我调用$ sessionId = $ proxy-> login(...)时,我得到了上述异常。
相同的代码适用于其他magento安装。
有什么建议吗? 感谢..
答案 0 :(得分:1)
另外,请尝试这个并让我们分享结果。
$proxy = new SoapClient($site_path.'api/soap/?wsdl=1');
答案 1 :(得分:0)
非常感谢Oğuz。 我现在正在奋斗2天,最终找到了解决方案。我不知道为什么服务器这样响应(虽然我真的很想知道)但是如果我用这个创建SoapClient,它就可以了。
$proxy = new SoapClient( $mage_url, array('compression' => SOAP_COMPRESSION_ACCEPT));
在使用gzip压缩的另一台服务器上测试代码(没有选项'compression'=> SOAP_COMPRESSION_ACCEPT)没有这个问题..
答案 2 :(得分:0)
也许这对某人有所帮助:
$mode = array (
'soap_version' => 'SOAP_1_1', // use soap 1.1 client
'keep_alive' => true,
'trace' => 1,
'encoding' =>'UTF-8',
'compression' => SOAP_COMPRESSION_ACCEPT | SOAP_COMPRESSION_GZIP | SOAP_COMPRESSION_DEFLATE,
'exceptions' => true,
'cache_wsdl' => WSDL_CACHE_NONE,
'stream_context' => stream_context_create (
array (
'http' => array('header' => 'Content-Encoding: gzip'),
)
)
);
$client = new SoapClient ( $wsdl, $mode );