Json 如何使用ColdFusion CFHTTP连接到ShiftPlanning.com API
用于身份验证的ShiftPlanning API文档()要求以JSON格式发送POST请求,如下所示: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响应时,我得到的只是该
{
"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调试器以检查请求在资源管理器上的发送方式?