Force.com标注:有没有办法从目标服务器获得完整响应

时间:2012-07-12 08:04:25

标签: salesforce force.com

从Force.com调用Web服务时,我收到了:

  

System.CalloutException:Web服务标注失败:意外   元件。 Parser期待元素   'http://schemas.xmlsoap.org/soap/envelope/:Envelope'但找到':HTML'

另一端的网络人员要求查看Salesforce从其服务器获得的完整响应。

有没有办法实现这一目标?我尝试从执行匿名运行调试级别'Finest',但是产生相同的小消息而没有进一步的细节。

4 个答案:

答案 0 :(得分:1)

您收到的消息是因为Saleforce正在尝试解析响应而生成错误,但遗憾的是它没有被记录。

解析错误正在发生,因为您正在获取HTML页面而不是SOAP消息响应。当您访问受防火墙保护的服务时,通常会发生这种情况。这意味着您在浏览计算机时可能会看到该服务,但请记住Salesforce位于防火墙之外,因此Salesforce对您服务的任何通信都将被阻止。

有几种方法可以解决这个问题,但Salesforce的这个wiki主题最能涵盖以下选项: http://www.salesforce.com/us/developer/docs/api/Content/sforce_api_om_outboundmessaging_security.htm

以上内容特定于出站消息传递,但基本上技术问题是相同的。

答案 1 :(得分:1)

不要忘记Apex包含一个HttpRequest类,它作为比SOAP API更低的层。您应该能够编写一个测试方法,将一个硬编码的XML请求发送到服务器并转储HttpResponse,以便您可以看到它。

答案 2 :(得分:1)

根据一些互联网研究,添加我自己的最佳答案:

您可以使用像Runscope这样的外部工具作为Web服务代理来自动转发请求并传递响应并查看XML SOAP消息。这不是SFDC的本机解决方案,但确实可以完成这项工作。

https://www.runscope.com/

答案 3 :(得分:0)

问题在于Force.com正在尝试解析实际上只是HTML的SOAP响应。当服务器端发生错误并且响应是为了显示浏览器而不是通过格式正确的SOAP响应发回异常报告时,有时会发生这种情况。

如果他们无法弄清楚他们为什么不发回可消费的SOAP响应,那么您可以尝试使用other tools(在Force.com之外)从您的浏览器拨打相同的网络服务电话,然后看看HTML在返回时实际说明了什么。