【问题标题】:PHP Soap Client ErrorsPHP Soap 客户端错误
【发布时间】:2015-01-27 12:44:48
【问题描述】:

我正在尝试使用第三方组织提供的网络服务。

服务的 URL 是this

这是我尝试过的:

$sc = new SoapClient( $my_wsdl_url, array(
            'soap_version' => SOAP_1_2
        ) );

第一个问题:检查提供的函数时,我得到一个 UNKNOWN 类型:

array(3) {
  [0]=>
  string(26) "UNKNOWN getDeletedHotels()"
  [1]=>
  string(23) "UNKNOWN getMasterData()"
  [2]=>
  string(44) "UNKNOWN getHotelData(dateTime $dRequestDate)"
}

我找到了this,但我无法访问 SOAP-Server。那么,如何更改 SOAP-Client 中的设置以获得正确的返回类型?

尽管如此,我尝试调用上述函数getHotelData(),但大约需要2分钟才能得到响应。并且响应是一个错误:

Fatal error: Uncaught SoapFault exception: [HTTP] Error Fetching http 
body, No Content-Length, connection closed or chunked data in [...]

有多个帖子具有相同的错误消息。我在这里阅读了this post,并通过将这些设置添加到客户端进行了尝试:

 $sc = new SoapClient( $my_wsdl_url, array(
            'soap_version' => SOAP_1_2,
            'trace' => 1,
            'stream_context' => stream_context_create( array( 
                'http' => array( 
                    'protocol_version' => 1.0 
                ) ) );
        ) );

之后,服务器根本没有响应!

所以,我有点卡在这里。有人能把我推向正确的方向吗?

PHP 版本为 5.4.19,在运行 xampp 的 mac 上

更新

我将上面的代码减少到最低要求(没有登录的东西),但我仍然无法获得完整的列表。

在使用 Amazon 的一种 Web 服务进行测试时,我得到了所有可用功能的完整列表。

$sc = new SoapClient( 'http://webservices.amazon.com/AWSECommerceService/AWSECommerceService.wsdl', array(
    'soap_version' => SOAP_1_2,
) );

// List all functions. This works
var_dump( $sc->__getFunctions() );

那么,会不会是网络服务本身设置不正确?

【问题讨论】:

  • 提供您的 WSDL,它会生成 PHP 对象。
  • 这个服务器的凭证没问题,可以用来测试吗?
  • @Piotr Olaszewski:更新了我的问题。恐怕我不能提供凭据。

标签: php web-services soap wsdl soap-client


【解决方案1】:

我最终得到了一个可行的解决方案,受此答案的启发:Sending Raw XML via PHP SoapClient request 在使用来自http://www.soapui.org/ 的软件获得所需的请求 XML 后

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多