如何在cfhttpparam中发送标题信息

时间:2016-04-28 18:03:40

标签: json coldfusion cfhttp cfhttpparam

我已经获得了以下指示,可以从Web服务中提取JSON数据列表。

GET /criminal_api/1.0/service/requests
HTTP Header: Authorization: Bearer 6EDC52118E164AE659EA2C772F3B9804

标题Bearer 6EDC52118E164AE659EA2C772F3B9804中的以下值是动态的,将使用以下content变量

进行设置
 <cfset content = deserializeJSON(    {
       "access_token": "84F224956C6AB5287038C0209EBAC5AB",
       "token_type": "bearer",
       "refresh_token": "E48BB9C164FE2125D3BE2CD602E4A692",
       "expires_in": 7199,
       "scope": "read write"
    })>

所以我尝试了以下内容:

<cfhttp method="get" url="https://test.mywebsite.com/criminal_api//1.0/service/requests" result="orderList">
    <cfhttpparam type="HEADER" name="Authorization" value="#content.token_type# #content.access_token#">
</cfhttp>

但是当我检查filecontent而不是获取JSON列表时,我得到:Connection Failure

我感觉这是我设置标题值的方式我不知道我做错了什么。

修改 当我在令牌类型和访问令牌之间添加“:”时,我收到了一个新错误:

struct
error   -1
error_description   Invalid access token: : 82D773278FB69CFBCFB4CB8CEF8AC03D

显然它认为“:”是访问令牌的一部分,因此它正在连接我只是不确定如何在value =字段中同时拥有这两个值,以便正确读取它。

1 个答案:

答案 0 :(得分:1)

你试过了吗?

<cfhttp method="get" url="https://test.mywebsite.com/criminal_api//1.0/service/requests" result="orderList" username="#content.token_type#" password="#content.access_token#">

这将产生“基本承载:6EDC52118E164AE659EA2C772F3B9804”的授权标题

手动,那将是:

<cfhttp method="get" url="https://test.mywebsite.com/criminal_api//1.0/service/requests" result="orderList">
<cfhttpparam type="HEADER" name="Authorization" value="Basic #content.token_type#:#content.access_token#">

还有十六进制值包含的问题。看看Getting Basic Authentication to work with ColdFusion - 也许这更能反映出你的情况。