2012-07-12 40 views
2

充分响应当调用从Force.com Web服务,我得到:Force.com标注:是否有一种方式来获得从目标服务器

System.CalloutException:Web服务标注失败:意外的 元素。解析器需要元素 “http://schemas.xmlsoap.org/soap/envelope/:Envelope”却发现“:HTML”在另一端

网络人员已要求看到完整的应答Salesforce正在从他们的服务器获取。

有没有办法做到这一点?我试过从匿名执行调试级别'Finest',但是这样会产生相同的小消息,但没有更多细节。

回答

1

您收到的消息是因为Saleforce尝试解析响应并生成错误,因此不幸遗失了该记录。

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

夫妇的方式来解决这个问题,但是从Salesforce最好这个wiki主题介绍的选项: http://www.salesforce.com/us/developer/docs/api/Content/sforce_api_om_outboundmessaging_security.htm

以上是针对出站消息,但本质上是技术问题是相同的。

+0

感谢您的回复。我怀疑网络管理员没有打开所有SFDC IP范围的防火墙。猜猜我会要求他们打开我的桌面IP,以便我可以使用SoapUI试用Web服务,但我知道它不能保证它会发现Salesforce Web服务调用实际获得的响应。 – micrask 2012-07-13 06:38:36

0

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

如果他们不明白为什么他们不回发消耗性SOAP响应,那么您可以尝试使用other tools(Force.com以外)从浏览器进行相同的Web服务调用,然后查看HTML实际上回报说。

+0

将尝试与SoapUI(需要另一个防火墙开放),看看我得到什么。 – micrask 2012-07-13 06:40:01

1

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

1

加入我自己的最佳答案的基础上,一些互联网研究:

您可以像使用Runscope外部工具作为一个Web服务代理自动转发请求,并通过回应并查看XML SOAP消息。这不是SFDC上的本地解决方案,但它确实能完成这项工作。

https://www.runscope.com/

相关问题