处理批量使用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