ColdFusion - 接收提交的 JSON 数据并解析

12
这是我第一次编写一个CFC,用于捕获来自外部 web 服务器的 JSON 数据,该服务器将发布信息。
我正在使用一个新服务,可以设置为通过 HTTP POST 向我指定的 URL 发送有关失败交易的信息的 JSON 数据包。
我想设置一个 CFC 来远程访问并将 JSON 数据反序列化为我们可以处理的内容。但是,我无法弄清楚如何设置 CFC 中的函数以接收数据?
我将 URL 设置为 www.mydomain.com/com/processRemote.cfc?method=catchJSONdata&ReturnFormat=json
为了测试它,我设置了一个简单的测试页面,应该发布会话数据。
<cfhttp 
  result="result"
  method="post" 
  url="http://www.mydomain.com/com/processRemote.cfc?method=catchJSONdata&ReturnFormat=json">

    <cfhttpparam type="header" name="content-type" value="application/json"/>
    <cfhttpparam type="body" value="#serializeJSON(session)#"/>

我现在不确定,在我的 CFC 中,用于最初存储 JSON 数据的 cfargument 名称应该是什么?因为发送 JSON 数据的远程服务不由我控制。

谢谢。

1个回答

18

如果您正在从HTTP请求正文中读取内容,则不会在参数范围内找到它-您需要直接从请求中提取它:

if (cgi.content_type EQ "application/json")
{
    myData = deserializeJSON(ToString(getHTTPRequestData().content));
}

我使用Taffy[1]框架来构建这样的服务(免责声明:我实际上帮助编写了处理此情况的框架部分)。

[1] http://atuttle.github.com/Taffy/


谢谢bpanulla!我试图创建一个能够直接接受发布的数据的CFC。根据你的答案,我创建了一个CFM页面来接收数据,并确保它符合我们的预期,然后将其交给CFC进行处理。 - Steve
同样的技巧在你的CFC方法中同样适用。你的CFC不需要定义任何参数(CFARGUMENT或脚本)。 - bpanulla
这个问题困扰了我好几个小时...如果我收到一个POST请求,我会期望在表单范围内获取数据!但是如果是以JSON形式发布在正文中,则不是这样。 啊,好吧,吸取教训。干杯。 - Gary Stanton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接