警告:SoapClient :: SoapClient(http://www.w3.org/2005/05/xmlmime):无法打开流:HTTP请求失败!需要HTTP / 1.1 401授权

时间:2015-08-27 13:54:36

标签: php xml eclipse web-services soap

我使用PHP 5.2.10对使用​​SOAP 1.2的Web服务进行简单的脚本连接调用。

相同的PHP安装能够通过Web服务连接到另一个使用SOAP 1.1的Web服务器而不会出现问题。此外,使用1.2的Web服务与使用几乎相同的硬代码的另外两台服务器正常工作。

但是,每次我在PHP 5.2.10的服务器上使用SOAP 1.2时,如果我从批处理文件运行脚本,我会收到以下错误:

Warning: SoapClient::SoapClient(http://www.w3.org/2005/05/xmlmime): failed to open stream: HTTP request failed! HTTP/1.1 401 Authorization Required in C: \NewSimpleConnectionTest.php on line 10

如果脚本是在另一台计算机上通过Eclipse PHP和PHP 5.2运行的,那么它没有任何错误,因此硬编码似乎很好,用户和密码也是正确的,因为它在其他服务器和Eclipse上使用测试:

我的脚本是这样的:

<?php
    $_endpoint = "http://server:8080/serverv/ServerAPI";
    $_username = "userServer";
    $_password = "123ABC!";
    try 
    {
            $client = new SoapClient($_endpoint."?WSDL", array('location' => $_endpoint, 'login' => $_username, 'password' => $_password, 'trace' => 1, 'features' => SOAP_USE_XSI_ARRAY_TYPE + SOAP_SINGLE_ELEMENT_ARRAYS, 'soap_version' => SOAP_1_2));
            echo 'Connected to Web Services.';
    }catch(Exception $e){
            echo 'Failure to connect to WebServices.';
    }
?>  

这是SOAP和XML phpinfo中的信息。

SimpleXML

Simplexml support => enabled
Revision => $Revision: 1.151.2.22.2.46 $
Schema support => enabled

soap

Soap Client => enabled
Soap Server => enabled

Directive => Local Value => Master Value
soap.wsdl_cache => 1 => 1
soap.wsdl_cache_dir => /tmp => /tmp
soap.wsdl_cache_enabled => 1 => 1
soap.wsdl_cache_limit => 5 => 5
soap.wsdl_cache_ttl => 86400 => 86400

是否有关于此PHP版本中缺少的内容或问题与该服务器中的SOAP 1.2一起工作的想法?

提前致谢!!

1 个答案:

答案 0 :(得分:1)

在解决此问题几个小时后,解决方案是将PHP的版本从5.2.10更改为5.5.28。

此旧版本存在某种错误,并阻止与SOAP 1.2的正确连接。

我希望这有助于使用这个旧版PHP的人。