警告:SoapClient::SoapClient(http://www.w3.org/2005/05/xmlmime)


Warning: SoapClient::SoapClient(http://www.w3.org/2005/05/xmlmime): failed to open stream: HTTP request failed! HTTP/1.1 401 Authorization Required

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

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

然而,每次我在这个服务器上使用SOAP 1.2与PHP 5.2.10,我得到了下面的错误,如果我从批处理文件运行脚本:

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有什么缺失或问题吗?

提前感谢!!

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

这个旧版本有一些错误,阻止了与SOAP 1.2的正确连接。