ColdFusion如何序列化web服务调用返回的变量?

ColdFusion如何序列化web服务调用返回的变量?,coldfusion,web-services,coldfusion-8,Coldfusion,Web Services,Coldfusion 8,我想知道ColdFusion是如何序列化从web服务调用返回的变量的,这样我就可以知道它们有多大(以字节为单位) 我遇到的问题是,当我的一些web请求返回时(我可以从日志语句中看出),但随后出现调用错误:无法执行web服务调用 从我到目前为止所做的调试中,我的直觉是,它试图序列化并发回的return结构太大,我想为它的大小添加另一个log语句。在返回之前,我可以在远程方法中记录len(resultStruct)或len(serializeJSON(resultStruct)),但理想情况下,我应

我想知道ColdFusion是如何序列化从web服务调用返回的变量的,这样我就可以知道它们有多大(以字节为单位)

我遇到的问题是,当我的一些web请求返回时(我可以从日志语句中看出),但随后出现调用错误:无法执行web服务调用

从我到目前为止所做的调试中,我的直觉是,它试图序列化并发回的return结构太大,我想为它的大小添加另一个log语句。在返回之前,我可以在远程方法中记录len(resultStruct)len(serializeJSON(resultStruct)),但理想情况下,我应该拥有通过一系列管道发送回来的真实长度

发出请求的代码(取自运行我们的功能测试的组件:-p)如下所示:

<cfinvoke webservice="#remoteFacadeURL#" method="executeTestCase" returnvariable="currMethodResult">
    <cfinvokeargument name="componentName" value="#componentName#"/>
    <cfinvokeargument name="methodNames" value="#getTestsQuery.methodName#"/>
    <cfinvokeargument name="TestRunKey" value="#TestRunKey#"/>
</cfinvoke>

我通过检查响应找到了答案,这让我找到了相应的文档,该文档表明序列化类型取决于cffunction标记的“returnFormat”属性,如果缺少该属性,则默认为WDDX

发自:

默认情况下,ColdFusion序列化所有 返回类型(包括简单返回) 类型),但XML除外,转换为WDDX格式, 并将XML数据作为XML文本返回

您还可以使用returnformat作为 调用时的HTTP请求参数 远程CFC功能。此参数 具有与 returnformat属性和覆盖 任何返回格式属性值 在cffunction标记中指定


另一个非默认选项是纯文本(可转换为字符串的类型的文本)和json。

您是否有实际抛出的异常?也可以在这里发布。您是否使用CF8+?您是否尝试过使用refreshWSDL=“true”?我们使用的是最新版本的CF8,从我看到的日志来看:java.net.SocketException:Connection reset by peer:socket write error,但是连接确实是稳定的,并且在返回后立即发生这种情况,因此我认为我们试图返回太多。尚未尝试refreshWSDL=“true”,但存根根本没有更改。web服务的wsdl是否正确返回?web服务是您自己的web服务吗?它是氟氯化碳吗?如果是,您是否尝试过在标准cfm页面中使用createobject()调用该方法?如果它不是您自己的web服务,您是否尝试过使用URL参数或简单的表单post手动调用它?WSDL很好,web服务99%的时间返回良好的结果;即使在失败时使用相同的输入调用(但是结果/输出可能不同——我有一种预感,这是非常大的输出构成了1%的情况)