magento 中的 Soap 版本不匹配

问题描述 投票:0回答:1

我是 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客户端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 ..

当我们尝试curl http://mydomain/api/soap时? wsdl&type=soap ,效果很好。

有人可以帮忙吗?

php magento soap wsdl magento-soap-api
1个回答
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);
© www.soinside.com 2019 - 2024. All rights reserved.