2

CFHttp を使用して Nexmo API に POST しようとしています。

API ドキュメント

<cfhttp url="https://rest.nexmo.com/number/buy/" method="post">
    <cfhttpparam name="api_key" value="#api.key#" type="url">
    <cfhttpparam name="api_secret" value="#api.secret#" type="url">
    <cfhttpparam name="country" value="US" type="url">
    <cfhttpparam name="msisdn" value="11234567890" type="url">
</cfhttp>

これを実行すると、ステータス 420 (間違ったパラメーター) が表示されます。

私は何を間違っていますか?

以下は PHP での例です: API

4

2 に答える 2

1

フォームフィールドに変更してみてください

<cfhttp url="https://rest.nexmo.com/number/buy/" method="post">
    <cfhttpparam name="api_key" value="#api.key#" type="FormField">
    <cfhttpparam name="api_secret" value="#api.secret#" type="FormField">
    <cfhttpparam name="country" value="US" type="FormField">
    <cfhttpparam name="msisdn" value="11234567890" type="FormField">
</cfhttp>

このドキュメントは、POST とコンボ post/get の送信を探しています。送信した内容に基づいて、変数を送信していません。FormField はそれを修正します。

于 2013-03-21T19:18:41.343 に答える
1

API ドキュメントを見ると、フィールドがフォーム値であることを期待しているように見えます。ドキュメントの抜粋を次に示します。

HTTP メソッド

すべての要求は、UTF-8 エンコードと URL エンコードされた値を使用して、HTTP POST または GET メソッドを介して送信されます。

POST に期待される「Content-Type」は「application/x-www-form-urlencoded」ですが、「application/json」、「application/jsonrequest」、「application/x-javascript」、「text/json」もサポートしています。 、"text/javascript"、"text/x-javascript"、"text/x-json" パラメーターを JSON オブジェクトとして投稿する場合。

したがって、コードを次のように変更してみてください。

<cfhttp url="https://rest.nexmo.com/number/buy/" method="post" charset="utf-8">
    <cfhttpparam name="Content-Type" value="application/x-www-form-urlencoded" type="header">
    <cfhttpparam name="Accept" value="application/xml" type="header">
    <cfhttpparam name="api_key" value="#api.key#" type="formField">
    <cfhttpparam name="api_secret" value="#api.secret#" type="formField">
    <cfhttpparam name="country" value="US" type="formField">
    <cfhttpparam name="msisdn" value="11234567890" type="formField">
</cfhttp>

Accept ヘッダーが に設定されていることに注意してくださいapplication/xml。ドキュメントによると、これはapplication/json. 必要に応じてその値を変更します。

于 2013-03-21T19:19:20.487 に答える