magento中的肥皂版本不匹配

时间:2015-02-20 13:46:29

标签: php web-services magento soap wsdl

我是SOAP新手。下面的代码在我的本地环境中工作正常,我的php版本是php-5.3.3和soap客户端版本1_1 `   

    require_once "../app/Mage.php";
    Mage::app();
    $client = new SoapClient('https://mydomain/api/soap?wsdl&type=soap');
    $session_1 = $client->__getFunctions();
    echo '<pre>'; print_r($session_1);echo '</pre>';

    $session = $client->login('user', 'password');
    // If you don't need the session anymore
    $client->endSession($session);

`

当我尝试在服务器(php-5.3.29和soap client 1_1)中执行此代码时, 我收到如下错误

` Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't load from ..`

然后我们尝试在服务器中进行一些更改的代码

require_once "../app/Mage.php";
Mage::app();
$client = new SoapClient('http://mydomain/api/soap?wsdl&type=soap', Array(
                            'location' =>   'http://mydomain/api/soap?wsdl&type=soap',
                            'cache_wsdl' => WSDL_CACHE_NONE,
                            'soap_version' => SOAP_1_1));
                            var_dump($client);
$session = $client->login('user', 'password');

我收到了这个错误

Fatal error: Uncaught SoapFault exception: [VersionMismatch] Wrong Version in ..

当我们尝试卷曲http://mydomain/api/soap时? wsdl&amp; type = soap,它工作正常。

任何人都可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

不确定这是否对您有所帮助,但由于本地和服务器环境之间的PHP版本存在差异,我认为这可能有所帮助。

在5.3.11中修复了一个PHP错误导致我在尝试连接OpenCart中的Royal Mail Shipping API时出现版本不匹配错误。

以下是该错误的详细信息:https://bugs.php.net/bug.php?id=49853

基本上,http头的stream_context部分被忽略,并且包含客户端ID和秘密。

包含在内是一种解决方法:

ini_set('user_agent', 'PHP-SOAP/' . PHP_VERSION . "\r\n" . $str_auth_header);

,其中

$str_auth_header = "Authorization: Bearer ". $str_token;

$arr_context = array('http' =>array('header' => $str_auth_header));

$obj_context = stream_context_create($arr_context);