2

我想知道 ColdFusion 如何序列化从 Web 服务调用返回的变量,以便弄清楚它们有多大(以字节为单位)。

我遇到了一些问题,当我的一些 Web 请求返回时(我可以从日志语句中看出),但随后我得到INVOCATION ERROR: Cannot perform web service invocation。

到目前为止,我对我所做的调试的预感是它试图序列化和发回的返回结构太大,我想为其大小添加另一个日志语句。我可以在返回之前在远程方法中记录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>
4

1 回答 1

2

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

来自cffunction ColdFusion 8 文档

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

您还可以在调用远程 CFC 函数时使用 returnformat 作为 HTTP 请求参数。此参数与 returnformat 属性具有相同的效果,并覆盖 cffunction 标记中指定的任何 returnformat 属性值。

其他非默认选项是纯文本(可以转换为字符串的类型的文本)和 json.

于 2010-07-15T20:58:06.123 回答