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

(コメントより)

ニヤニヤして、「Accept」ヘッダーを cfhttp 呼び出しに追加してみてください。curl がデフォルトですべてのヘッダーを受け入れる可能性があることをどこかで見ました: Accept: */*. 406 エラー コードに基づいて、ここで関連する可能性があります。

406 Not Acceptable
要求されたリソースは、要求で送信された Accept ヘッダーによると、受け入れられないコンテンツを生成することしかできません。

そうでない場合は、未加工のリクエスト ダンプ (上記のように) を見て、何が違うのかを確認することをお勧めします。

アップデート:

CraigL はコメントで、"Accept" all ヘッダーを追加することで問題が解決したことを確認しました。ここに完全なコードを投稿すると、ソリューションがより見やすくなります。

<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 に答える