我想知道ColdFusion如何序列化从Web服务调用返回的变量,以便我可以计算它们的大小(以字节为单位)。
我遇到的问题是,当我的一些Web请求返回时(我可以从日志语句中判断)但是我得到 INVOCATION ERROR:无法执行Web服务调用。
我从调试到目前为止所做的预感是它尝试序列化和发送回的结构太大了,我想为它的大小添加另一个日志语句。我可以在返回之前在远程方法中记录 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>
答案 0 :(得分:2)
我通过检查响应找到了答案,并让我找到相应的文档,指出序列化类型取决于cffunction标记的“returnFormat”属性,如果缺少默认值为WDDX。
从cffunction ColdFusion 8 Documentation:
开始默认情况下,ColdFusion序列化所有 返回类型(包括简单返回 类型),除了XML,到WDDX格式, 并以XML文本形式返回XML数据。
您也可以使用returnformat作为 调用a时的HTTP请求参数 远程CFC功能。这个参数 与...有同样的效果 returnformat属性和覆盖 任何returnformat属性值 在cffunction标签中指定。
其他非默认选项是plain(可以转换为字符串的类型的文本)和json。