我是 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 版本存在差异,我认为这可能会有所帮助。
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);