PHP SOAP客户端通过代理失败

时间:2015-07-07 00:31:50

标签: php web-services soap proxy wsdl

我大约一年前编写了一个脚本来通过PHP Soap客户端访问服务,它运行得很好。代码没有投入生产,因为当时不需要。快进到几天前,现在相同的代码不起作用。对系统的唯一更改是更新/升级。

我觉得它与Soap客户端的代理部分有关。

以下是停止工作的代码(URL替换为X')

$soapClient = new SoapClient('XXXX?wsdl', array('proxy_host' => self::PROXYHOST, 'proxy_port' => self::PROXYPORT));

错误:

  

致命错误:未捕获的SoapFault异常:[WSDL] SOAP-ERROR:解析WSDL:无法从' XXXX加载?wsdl' :无法加载外部实体" XXXX?wsdl"在...

现在,如果我通过CURL运行如下相同的URL,我会得到预期的Soap XML响应:

$mycurl = curl_init();
curl_setopt ($mycurl, CURLOPT_PROXY, self::PROXYHOST.':'.self::PROXYPORT);
curl_setopt ($mycurl, CURLOPT_URL, 'XXXX?wsdl');
echo curl_exec($mycurl);
curl_close($mycurl);

输出:

<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:tns="XXXX" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" targetNamespace="XXXX" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
  <wsdl:types>
     <s:schema elementFormDefault="qualified" targetNamespace="XXXX">
       <s:element name="Login">
          <s:complexType>
            <s:sequence>
 ....

最后,如果我将Soap客户端脚本复制到不使用代理的服务器,它将按预期工作,没有问题。

PHP版本是5.5.9-1ubuntu4.11

我已经阅读了每个StackOverflow问题,我发现该问题属于某些问题并无法找到解决方案。

有什么想法吗?谢谢。

0 个答案:

没有答案
相关问题