Nexmo API和CFHttp POST

我正在尝试使用CFHttp POST到Nexmo API。

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


看看API文档,我觉得他们期望这些字段是表单值。 以下是这里的文档摘录:

HTTP方法

所有请求均通过HTTP POST或GET方法使用UTF-8编码和URL编码值提交。

POST的预期“内容类型”是“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 。 根据你想要的改变这个值。


尝试更改为formfield

<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将解决这个问题。

链接地址: http://www.djcxy.com/p/33145.html

上一篇: Nexmo API & CFHttp POST

下一篇: php