将curl转换为coldfusion cfhttp

时间:2015-07-16 20:05:34

标签: curl coldfusion http-status-code-406

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

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>

1 个答案:

答案 0 :(得分:2)

(来自评论)

对于笑脸,尝试添加&#34;接受&#34;标题为cfhttp调用。我在某处看到卷曲可能会默认添加一个接受所有标头:Accept: */*。基于406 error code,这可能与此相关。

  

406不可接受
  请求的资源只能根据发送的Accept标头生成不可接受的内容   在请求中。

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

<强>更新

CraigL在评论中证实添加&#34;接受&#34;所有标题解决了问题。在此处发布完整代码,以便解决方案更加明显:

<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>