【问题标题】:WebAPI 2 and post parameters in body passed as nullWebAPI 2 和正文中的 post 参数作为 null 传递
【发布时间】:2014-06-09 03:42:20
【问题描述】:

我有一个 webapi2 控制器方法如下:

[Route("shipment/{shipmentId:long}/quotes/register")]
public HttpResponseMessage ProvideQuote(long shipmentId, [FromBody]RegisterQuote quote)
{
    HttpResponseMessage response;
    response = Request.CreateResponse(HttpStatusCode.Accepted, String.Format("quote of price {0} for shipment {1} has been registred", quote.QuotePrice, shipmentId));
    return response;
}

现在的问题是,当我使用 REST 客户端测试该方法时,quote 始终为空。

这是我的测试方式

参数

现在我得到的回应是:

你可以看到查询字符串参数被正确传递了,但是body参数没有被传递。知道我做错了什么。

编辑 1:

请求头:

User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.114 Safari/537.36
Origin: chrome-extension://hgmloofddffdnphfgcellkdfbfbjeloo
Authorization: Bearer Hhz54k1BLyPMJxucSeq4pLwhS3Y4Ez5WCoEMzhe-uH7gHMFMRjHE2Im9juinMLhqaHVZmkVrWetEiCsYbaduzLas7rYf-D3p40lH_q3IDEn2rdt122qpiHvnUr7Cz2b6GXiPYLGDMQFOMN0lbkYmoZe95sxXDRvDfpdJw4G2Fk3Ri1A25F3qAZCnBhjA-BLoL-2eAjxX-RPCGAXjaNLjT4zsxRJH8NP5qC7azPrWCDKRuK282hnTbKViQjMBDflwlxdPhTNkiCBtxWn03xRcxH9GD1z5Ca0Qinn5gUS7qWwCt9zoZtHcbwFY1kvxyx7x5yCuyEfrGHgKG1s7zjTPjNwU0eV7cC6xQA2GsOAnqADxMDyRryCRKLY7WcyQftRhZ70WbtSW2PI0F7qmDr8n0wvktmKglusLEDf4ib925n-ajVTyMl7v9O-9OsdgCj_GSNE6_bszd3Ak1yUurs-VoQ
Content-Type: application/x-www-form-urlencoded 
Accept: */*
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8,kn;q=0.6

顺便说一句,我不确定我的所有图片都发生了什么!

问候 基兰

【问题讨论】:

  • 您能分享一下您的请求标头是什么样的吗?
  • @KiranChalla:我已经更新了请求标头

标签: asp.net-web-api asp.net-web-api2


【解决方案1】:

这里的问题是您在正文中发送 Json 内容,但内容类型标头为 application/x-www-form-urlencoded...如果要发送数据,请将内容类型标头更改为 application/jsontext/json json...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-20
    • 1970-01-01
    • 2019-01-16
    • 2018-11-10
    • 1970-01-01
    相关资源
    最近更新 更多