3

我有一个像魅力一样的 curl 调用:

curl -X POST -H 'Content-Type: application/xml' -H "X-ApiVersion: 1.0" -H "X-AccessToken: [api-token]" -d '[xml]' https://www.API.com

我试图将其转换为coldfusion,但服务器在我身上踢回了406错误。我已经尝试将我能想到的所有东西都扔到这个问题上,但无法让它发挥作用。任何帮助表示赞赏!这是CF:

<cfhttp url="#APIURL#" method="POST" result="activity">
    <cfhttpparam type="header" name="Content-Type" value="application/xml">
    <cfhttpparam type="header" name="X-AccessToken" value="#accesstoken#" />
    <cfhttpparam type="header" name="X-ApiVersion" value="1.0" />   
    <cfhttpparam type="body" encoded="false" value="#trim(request.xml)#" />
</cfhttp>
4

1 回答 1

2

(来自评论)

对于咧嘴笑,尝试在 cfhttp 调用中添加“Accept”标头。我在某处看到 curl 可能会默认添加一个接受所有标题:Accept: */*. 基于406 错误代码,这可能与此处相关。

406 Not Acceptable
请求的资源只能生成根据请求中发送的Accept headers不可接受的内容。

如果没有,最好的办法是查看原始请求转储(如上所述),看看有什么不同。

更新:

CraigL 在评论中确认添加“接受”所有标题解决了该问题。在此处发布完整代码,以便解决方案更加明显:

<cfhttp url="#APIURL#" method="POST" result="activity">
    <cfhttpparam type="header" name="Content-Type" value="application/xml">
    <cfhttpparam type="header" name="X-AccessToken" value="#accesstoken#" />
    <cfhttpparam type="header" name="X-ApiVersion" value="1.0" />   
    <cfhttpparam type="header" name="Accept" value="*/*"> 
    <cfhttpparam type="body" encoded="false" value="#trim(request.xml)#" />
</cfhttp>
于 2015-07-17T22:50:55.557 回答