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
. 必要に応じてその値を変更します。