2017-07-27 152 views
0

我正在使用PHP创建一个SOAP客户端,并且遇到了使用问题。当我使用soapui测试请求直接XML时,它响应良好并且可以正常工作,但是使用SoapClient类的PHP可以告诉我在soapui中使用的凭据是不正确的。通过soapui通过soapui处理XML但不通过PHP的SOAP

不知道我在这里失踪。我下面 代码下面是我的XML

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:pric="http://upshot.co.uk/pricing_request_ws"> 
<soapenv:Header/> 
<soapenv:Body> 
<pric:retrieveProductsPricing> 
<username>apiuser</username> 
<password>pword</password> 
<postcode>EC2R 7HP</postcode> 
</pric:retrieveProductsPricing> 
</soapenv:Body> 
</soapenv:Envelope> 

下面是我的PHP

$wsdl = "http://URL?wsdl"; 
$client = new SoapClient($wsdl, array('trace'=>1)); 

try 
{ 
$options = array(
'soap_version'=>SOAP_1_2, 
'exceptions'=>true, 
'trace'=>1, 
'cache_wsdl'=>WSDL_CACHE_NONE 
); 
$params = array(
    'User name' => 'apiuser', 
    'Password' => 'pword', 
    'Postcode' => 'EC2R 7HP' 

); 
$response = $client->retrieveProductsPricing($params); 
print_r($response); 
} 
catch(SoapFault $e) 
{ 
print_r($e); 

这是我第一次配置SOAP客户端,所以我敢肯定,我在这都可能犯了一个错误。

+0

是'用户name'意思是'用户名'或'用户名'? – Yolo

回答

0

看一看第一个代码:

<username>apiuser</username> 
<password>pword</password> 
<postcode>EC2R 7HP</postcode> 

你应该使用相同的密钥对数组

$params = array(
    'username' => 'apiuser', 
    'password' => 'pword', 
    'postcode' => 'EC2R 7HP' 
); 

Useful examples

+0

啊,当然,缺乏专注!感谢那! – mrlew