处理api调用并以json格式恢复数据

时间:2013-12-09 22:46:50

标签: coldfusion asp.net-web-api sendgrid

我有一个关于向sendgrid发送Web API调用的问题:

以下文档用于检索高级统计信息:

http://sendgrid.com/docs/API_Reference/Web_API/Statistics/statistics_advanced.html

在“通话”部分,提到了以下内容:

POST    https://api.sendgrid.com/api/stats.getAdvanced.json
POST Data   api_user=your_sendgrid_username&api_key=your_sendgrid_password&start_date=2013-01-01&end_date=2013-01-02&data_type=global

我知道我需要使用cfhttp进行Web API调用,我应该这样做 在url参数中提到"https://api.sendgrid.com/api/stats.getAdvanced.json" cfhttp标签。

我需要在哪里提及api_user和api_key部分?我明白我会的 在这里提一下我的sendgrid的帐户用户名和密码。

对于解释目的,让我们考虑以下虚拟值:

api_user = stack

api_key = 123456

请告诉我。我正在尝试发送API调用以JSON格式获取数据。

由于

ATTEMPT#1

我使用以下代码:

<cfhttp url="https://api.sendgrid.com/api/stats.getAdvanced.json" method="POST" result="returnStruct">
    <cfhttpparam name="api_user" value="stack" type="formfield">
    <cfhttpparam name="api_key" value="123456" type="formfield">
    <!--- <cfhttpparam name="days" value="5" type="formfield">  --->
    <cfhttpparam name="start_date" value="2013-12-06" type="formfield"> 
    <!--- <cfhttpparam name="end_date" value="2013-12-09" type="formfield"> --->

</cfhttp>


<cfdump var="#returnStruct#">

我以结构的形式收到以下错误。我上面做错了吗?请检查下面的代码。

Charset     [empty string]
ErrorDetail     [empty string]
Filecontent     {"error": "error in data_type: data_type is required"}
Header  HTTP/1.1 400 Bad Request Content-Type: text/html Connection: close Date: Tue, 10 Dec 2013 06:21:19 GMT Server: nginx/1.4.2
Mimetype    text/html
Responseheader  
struct
Connection  close
Content-Type    text/html
Date    Tue, 10 Dec 2013 06:21:19 GMT
Explanation     Bad Request
Http_Version    HTTP/1.1
Server  nginx/1.4.2
Status_Code     400
Statuscode  400 Bad Request
Text    YES 

我很想知道,它指的是data_type,因为文档没有谈到它。

1 个答案:

答案 0 :(得分:1)

通常,您会为每个键使用<cfhttpparam>

<cfhttp url="https://api.sendgrid.com/api/stats.getAdvanced.json" method="POST">
    <cfhttpparam name="api_user" value="some_username_goes_here" type="formfield">
    <cfhttpparam name="api_key" value="some_api_key_goes_here" type="formfield">
    ...more params...
</cfhttp>