处理批量使用asp.net网页API

我试图用一个asp.net的Web API应用程序来处理成批SendGrid事件,我已经因路碰上的绊脚石SendGrid处理的内容类型sendgrid事件它发送的帖子的标题。处理批量使用asp.net网页API

从他们documentation:

成批事件柱具有应用/ JSON, 的内容类型报头和每行包含正好一个JSON串,与代表一个事件的每一行 。请注意,目前POST标头 将此帖定义为application/json,但它不是;每行都是 有效的JSON字符串,但整个POST正文不是。

所以,对于一个控制器:

public class SendGridController : ApiController 

{

// POST api/values

public void Post([FromBody]string value)

{

// do something with value

}

}

制作后,以它作为SendGrid并会导致“价值”被空。

string URI = "http://localhost:3018/api/sendgrid/"; 

string myParameters =

@"={""email"":""[email protected]"",""timestamp"":1322000095,""user_id"":""6"",""event"":""bounced""}

{""email"":""[email protected]"",""timestamp"":1322000096,""user_id"":""9"",""event"":""bounced""}";

using (var wc = new System.Net.WebClient())

{

wc.Headers[System.Net.HttpRequestHeader.ContentType] = "application/json"; // I work fine if "application/x-www-form-urlencoded" is used.

wc.UploadString(URI, myParameters);

}

如果我改变内容类型我的客户为例,“应用程序/ x-WWW的形式,进行了urlencoded”,一切正常。

有一个简单的办法,我来覆盖这个约定,这样我就可以搞定sendgrid提供在我的控制器方法的字符串格式错误的“JSON”?

回答:

好吧,我终于想通了。窍门是直接删除“value”参数并使用请求对象。

因此,像:

public class SendGridController : ApiController 

{

// POST api/values

public void Post()

{

var value = Request.Content.ReadAsStringAsync().Result;

// do something with value

}

}

以上是 处理批量使用asp.net网页API 的全部内容, 来源链接: utcz.com/qa/264333.html

回到顶部