Json 如何使用ColdFusion CFHTTP连接到ShiftPlanning.com API

Json 如何使用ColdFusion CFHTTP连接到ShiftPlanning.com API,json,api,coldfusion,Json,Api,Coldfusion,用于身份验证的ShiftPlanning API文档()要求以JSON格式发送POST请求,如下所示: { "key": "YOUR_API_KEY", "request": { "module": "staff.login", "method": "GET", "username": "xxxxxxx", "password": "xxxxxxx" } } 看起来很简单,但我似乎没有连接到API。当我CFDUMP CFHTTP响应时,我得到的只是该

用于身份验证的ShiftPlanning API文档()要求以JSON格式发送POST请求,如下所示:

{
  "key": "YOUR_API_KEY",
  "request": {
    "module": "staff.login",
    "method": "GET",
    "username": "xxxxxxx",
    "password": "xxxxxxx"
  }
}
看起来很简单,但我似乎没有连接到API。当我CFDUMP CFHTTP响应时,我得到的只是该结构的filecontent值中页面的HTML源,而不是JSON

下面是我用于CFHTTP调用的代码:

<!--- set values for API authentication --->
<cfset stFields = {
    "key" = "xxxxxxxxxxxxxxxxxxxxxxxx",
    "request" = {
        "module" = "staff.login",
        "method" = "GET",
        "username" = "xxxxx",
        "password" = "xxxxx"
    }
}>

<!--- Send an authentication request to SHIFTPLANNING API --->
<cfhttp method="post" url="https://www.shiftplanning.com/api/" timeout="30">
    <cfhttpparam type="header" name="Accept" value="application/json" />
    <cfhttpparam type="header" name="Content-Type" value="application/json" />
    <cfhttpparam type="body" value="#serializeJSON(stFields)#" />
</cfhttp>

我是否遗漏了一些明显的东西?

使用api explorer上的Chrome开发工具,它们似乎在一个名为
data
的表单字段中传递JSON数据。为我更改
cfhttp
调用此返回的JSON数据:

<!--- Send an authentication request to SHIFTPLANNING API --->
<cfhttp method="post" url="https://www.shiftplanning.com/api/" timeout="30" charset="utf-8">
    <cfhttpparam type="header" name="Content-Type" value="application/x-www-form-urlencoded">
    <cfhttpparam type="formfield" name="data" value="#serializeJSON(stFields)#" />
</cfhttp>

使用api浏览器上的Chrome开发工具,它们似乎在一个名为
data
的表单字段中传递JSON数据。为我更改
cfhttp
调用此返回的JSON数据:

<!--- Send an authentication request to SHIFTPLANNING API --->
<cfhttp method="post" url="https://www.shiftplanning.com/api/" timeout="30" charset="utf-8">
    <cfhttpparam type="header" name="Content-Type" value="application/x-www-form-urlencoded">
    <cfhttpparam type="formfield" name="data" value="#serializeJSON(stFields)#" />
</cfhttp>


您可能希望转储响应,而不是发送的内容。谢谢您的建议。我确实转储了响应,但它不是JSON响应,只是从任何常规HTML页面获得的标准CFHTTP响应(例如,CFHTTP.filecontent包含该页面的HTML源代码)。基于此,我似乎根本没有连接到API。我只是转储了我正在发送的内容,以确认信息是正确格式化的JSON数据,并将其发送到API中。您是否能够使用获得成功的响应?chrome上的调试似乎表明,您需要将正文发布为
urlencoded
,标题为
,我在shiftplanning.com/API/Explorer上使用API Explorer工具时得到了成功的响应,因此我知道我的凭据很好(密钥、用户名、密码)。我无法使用shiftplanning.com/api或shiftplanning.com/api/explorer作为带有CFHTTP的URL获得JSON响应。已尝试将URLEncodedFormat与建议的标题一起使用,但也没有得到JSON响应。@vlad-o:body参数也需要
urlencoded
。您是否检查了chrome调试器以检查请求在浏览器上的发送方式?您可能希望转储响应,而不是发送的内容谢谢您的建议。我确实转储了响应,但它不是JSON响应,只是从任何常规HTML页面获得的标准CFHTTP响应(例如,CFHTTP.filecontent包含该页面的HTML源代码)。基于此,我似乎根本没有连接到API。我只是转储了我正在发送的内容,以确认信息是正确格式化的JSON数据,并将其发送到API中。您是否能够使用获得成功的响应?chrome上的调试似乎表明,您需要将正文发布为
urlencoded
,标题为
,我在shiftplanning.com/API/Explorer上使用API Explorer工具时得到了成功的响应,因此我知道我的凭据很好(密钥、用户名、密码)。我无法使用shiftplanning.com/api或shiftplanning.com/api/explorer作为带有CFHTTP的URL获得JSON响应。已尝试将URLEncodedFormat与建议的标题一起使用,但也没有得到JSON响应。@vlad-o:body参数也需要
urlencoded
。您是否检查了chrome调试器以检查请求在资源管理器上的发送方式?