【问题标题】:How to send header info in cfhttpparam如何在 cfhttpparam 中发送标头信息
【发布时间】:2016-04-28 18:03:39
【问题描述】:

我得到了以下指示,可以从 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>

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

我有一种感觉,这是我设置标题值的方式,我只是不确定我做错了什么。

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

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

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

【问题讨论】:

  • 连接失败通常意味着您根本没有建立连接。如果它与所需的标题或内容问题有关,我会期待不同的消息。检查是否:A)您的证书已安装在密钥库中 - Java 可以使用 SSL/TLS 与相关站点握手 B)服务器正确解析 IP 地址。
  • 标记之前的 cfhttp 获取到相同的地址以提取 access_token JSON 数据能够毫无问题地连接。只有当我点击相同的 url 但不同的方法“请求”并且我应该在标题中传递上一个调用中的信息时,我才会得到无连接失败。抱歉,我不确定我是否了解 JAVA,因为我在冷融合中这样做。请解释一下,我很乐意跟进。感谢您的回复。
  • 我对我的问题添加了一个编辑,这可能有助于缩小正在发生的事情。
  • 网络服务有多特别?说明显示标记类型 Bearer 的大写字母“B”,但您的示例为标记类型 bearer 传递小写字母“b”。
  • 我把它吐回了它的自我。在这种情况下,对 web 服务的第一次调用会获取不记名术语,我只是将其保存到变量中。所以我一直这样。你认为 deserializeJSON 会改变这种情况吗?

标签: json coldfusion cfhttp cfhttpparam


【解决方案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#">

这将产生“Basic Bearer: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 - 也许这更能反映你的情况。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-08
    • 2010-09-11
    • 2018-03-01
    • 2012-10-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多