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下一篇: php