我是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,它工作正常。
任何人都可以帮忙吗?
答案 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);