magento SOAP“未知内容编码”

时间:2012-03-16 12:07:09

标签: magento soap

我尝试使用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安装。

有什么建议吗? 感谢..

3 个答案:

答案 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 );