【问题标题】:XML::Compile::SOAP - convert response into hashXML::Compile::SOAP - 将响应转换为哈希
【发布时间】:2014-01-22 19:05:53
【问题描述】:

我对 SOAP 和 XML::Compile 还是很陌生,而且我可以在 Google 上搜索到的大多数示例都以 SOAP 调用结尾,而没有过多解释如何处理响应。

有没有一种简单的方法可以将 SOAP 响应转换为哈希?

这是我的代码

....

my ($response, $trace) = $call->($request);
my $content=$trace->response->decoded_content();
my $out=XML::Hash->new()->fromXMLStringtoHash($content)

但我收到以下错误:

/usr/lib/perl5 中第 4 行第 0 列第 11177 字节的文档元素之后的垃圾

查看从服务器返回的内容:

ba8

...

信封>

0

我不确定“ba8”是如何进入响应的,因为一旦您删除它,它看起来就像一个完整且有效的响应。

【问题讨论】:

    标签: xml web-services perl soap


    【解决方案1】:

    SOAP 响应应该是一个散列。 trace 是一个对象,可让您获取 HTTP 请求和/或响应,但除了调试之外,您不需要查看它。

    use Data::Dumper;
    
    ...
    print Dumper $response;
    

    【讨论】:

    • $response 返回空 - 可能是因为肥皂响应不是完整的 XML - 我一直看到 ba8 或 1ff8 切断了跟踪中的正确响应 - 是否有某种响应的编码问题,因为没有理由应该存在这些行。
    • 同时查看 HHTP 响应的痕迹 -Client-Transfer-Encoding: chunked 告诉我这是编码问题,因为所有奇怪的行都以恒定频率出现
    【解决方案2】:

    原来问题出在 Net::HTTP 中的已知错误 - 在我将其与 LWP::UserAgent 一起升级到最新版本后,现在一切正常> [以防万一]。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-13
      • 2016-08-26
      • 1970-01-01
      • 2010-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-05
      相关资源
      最近更新 更多