2

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

System.CalloutException:Web 服务标注失败:意外元素。解析器期待元素 'http://schemas.xmlsoap.org/soap/envelope/:Envelope' 但发现 ':HTML'

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

有没有办法做到这一点?我尝试使用匿名执行的调试级别“最佳”运行,但这会产生相同的小消息,没有进一步的细节。

4

4 回答 4

1

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

于 2012-07-18T23:05:50.677 回答
1

您收到的消息是因为在 Saleforce 尝试解析响应时生成了一个错误,并且不幸的是它没有被记录。

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

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

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

于 2012-07-12T16:31:54.393 回答
1

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

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

https://www.runscope.com/

于 2015-12-03T13:22:24.610 回答
0

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

如果他们无法弄清楚为什么他们没有发回可消费的 SOAP 响应,那么您可以尝试使用其他工具(Force.com 之外)从您的浏览器进行相同的 Web 服务调用,然后查看 HTML 实际显示的内容返回。

于 2012-07-12T16:33:00.510 回答