PHP中的SoapClient抛出SoapFault异常:[HTTP]禁止

时间:2013-04-10 23:08:29

标签: php soap soap-client

我对这整个SOAP概念缺乏经验,所以当我看到错误时,我不知道该寻找什么。 所以基本上我试图从另一家公司提取一些数据。那家公司给了我一个数字证书和一些xsd& wsdl文件,并问我服务器的IP,以便他们可以将其列入白名单。正如我所提到的,我不知道如何处理他们给我的文件,所以我将它们上传到我的服务器然后我开始谷歌搜索,我已经粘贴了以下代码(虽然我甚至不知道是否这很有意义):

$protected_url = "http://www.myurl.com/WSDLFILE.wsdl";
$my_cert_file = "http://www.myurl.com/CERTFILE.pem";
$client = new SoapClient($protected_url, array('local_cert'=> $my_cert_file,'trace'=>1));

$params->Affiliate->AffiliateID = 555;
$params->Address->AddressLine = "123 Main Street";
$params->Contact = 'No';

$result = $client->QueryAddress($params);

我收到以下错误

[10-Apr-2013 18:59:46 America/New_York] PHP Fatal error:  Uncaught SoapFault exception: [HTTP] Forbidden in /home/mysite/index.php:15
Stack trace:
#0 [internal function]: SoapClient->__doRequest('<?xml version="...', 'https://secure....', 'http://www....', 1, 0)
#1 /home/mysite/index.php(15): SoapClient->__call('QueryAddress', Array)
#2 /home/mysite/index.php(15): SoapClient->QueryAddress(Object(stdClass))
#3 {main}
  thrown in /home/mysite/index.php on line 15

有点难以寻求帮助,因为我甚至不知道我在寻找什么,所以感谢任何指导

编辑:我还应该补充一点,我实际上已经能够通过使用cURL并设置&#34; CURLOPT_SSLCERT&#34;来获得成功的响应。选项,但我需要使用SOAP

1 个答案:

答案 0 :(得分:0)

(在评论中回答。转换为社区wiki答案。见Question with no answers, but issue solved in the comments (or extended in chat)

OP写道:

  

解决:我的问题是我使用.wsdl文件的方式。我以为我必须上传他们提供的那个,然后在创建SoapClient时使用它,但事实并非如此。我需要的是引用他们的wsdl url,其结尾类似于https:......asmx?WSDL