我在受限网络/受限访问互联网中工作。因为我必须使用代理来进行网络服务调用。
这是我调用 Web 服务和响应的 PHP 代码。
$client = new SoapClient("http: //www.xyz.com/abc/wsdls/login.wsdl", array("trace" => 1, "exceptions" => 1, 'proxy_host' => $proxy_host, 'proxy_port' => $proxy_port, 'proxy_login' => $proxy_login, 'proxy_password' => $proxy_password));
响应是
致命错误:未捕获的 SoapFault 异常:[WSDL] SOAP-ERROR:解析 WSDL:无法从“ http://www.xyz.com/abc/wsdls/login.wsdl ”加载:加载外部实体失败
如果我从错误消息中复制 url 并粘贴到浏览器中(使用相同的代理设置)它可以工作。
第二种情况是,如果我传递值而不是变量,它会给我不同的响应
$client = new SoapClient("http: //www.xyz.com/abc/wsdls/login.wsdl", array("trace" => 1, "exceptions" => 1, 'proxy_host' => "192.168.0.3", 'proxy_port' => 3128, 'proxy_login' => "actualuserName", 'proxy_password' => "actualPassword"));
警告:SoapClient::SoapClient(http://www.xyz.com/abc/wsdls/login.wsdl):打开流失败:HTTP 请求失败!HTTP/1.0 407 代理身份验证需要在 /var/www/myproj/login.php 第 56 行
我已经传递了所需的代理参数,但仍然出现错误。域名和 IP 地址都列在防火墙的服务器/代理设置中。