Посмотрев на документацию API, мне кажется, что они ожидают, что поля будут представлять собой значения формы. Вот выдержка из the documentation here:
HTTP Методы
Все запросы передаются через POST HTTP GET или метод с использованием кодировки UTF-8 и URL, закодированные значения.
Ожидаемое "Content-Type" для POST является "применение/х-WWW-форм-urlencoded", однако мы также поддерживаем "приложения/JSON", "приложение/JSONRequest", "применение/х-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
. Измените это значение в зависимости от того, что вы хотите.
Ваш код выглядит правильно для меня. Может ли быть признано, что ваш запрошенный isdn недействителен? – BKK
@BenKoshy Я проверил, что все прошлое действительно. Я только что изменил номер перед публикацией здесь. – Dre