Coldfusion Nexmo API&;CFHttp POST

Coldfusion Nexmo API&;CFHttp POST,coldfusion,cfhttp,nexmo,Coldfusion,Cfhttp,Nexmo,我正在尝试使用CFHttp发布到nexmoapi 运行此操作时,我得到状态420(错误参数) 我做错了什么 下面是一个PHP示例:尝试更改为formfield <cfhttp url="https://rest.nexmo.com/number/buy/" method="post"> <cfhttpparam name="api_key" value="#api.key#" type="FormField"> <cfhttpparam nam

我正在尝试使用CFHttp发布到nexmoapi


运行此操作时,我得到状态420(错误参数)

我做错了什么


下面是一个PHP示例:

尝试更改为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/get。根据您发送的内容,您不发送变量。FormField将解决这个问题。

查看API文档,我觉得他们希望字段是表单值。以下是一段摘录:

HTTP方法

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

POST的预期“内容类型”为“application/x-www-form-urlencoded”,但在将参数作为json对象发布时,我们也支持“application/json”、“application/jsonrequest”、“application/x-javascript”、“text/javascript”、“text/x-javascript”、“text/x-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无效吗?@BenKoshy我已经检查过所有被传递的内容都是有效的。在这里发布之前,我刚刚更改了号码。@Dre也许您还需要包含字符编码。我已经更新了我的代码示例。仍然不走运。我还尝试了
encoded=“yes”
,但没有成功。@Dre我刚刚注意到文档中还说明您必须在请求中设置Accept HTTP头,所以让我再次更新我的答案。不幸的是,同样的事情。我可以整天做
GET
请求,但是
POST
不合作。嗯?是的,这只是找出他们想要的格式的问题。你找到其他语言(PHP等)的例子了吗?这可能对我们有帮助。
<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>