我试图在Fiddler中使用[Request Header]选项卡调用以下POST方法[http://localhost:45361/api/test]
,[User-Agent: Fiddler, Content-Type: application/json; charset=utf-8]
,在[Request Body]中,我传递了以下请求{{ 1}}。但是,它输出错误 - > 对象引用未设置为对象的实例。
{"tag":"5667"}
编辑: 查询类:
[HttpPost]
public HttpResponseMessage post([FromBody] Query query)
{
IQueryable<data_qy> Data = null;
if (!string.IsNullOrEmpty(query.tag)) //--> line causing the ERROR
{
var ids = query.tag.Split(',');
var dataMatchingTags = db.data_qy.Where(c => ids.Contains(c.TAG));
if (Data == null)
Data = dataMatchingTags;
else
Data = Data.Union(dataMatchingTags);
}
if (!string.IsNullOrEmpty(query.name))
{
var ids = query.name.Split(',');
var dataMatchingTags = db.data_qy.Where(c => ids.Any(id => c.Name.Contains(id)));
if (Data == null)
Data = dataMatchingTags;
else
Data = Data.Union(dataMatchingTags);
}
if (Data == null)
Data = db.data_qy;
if (query.endDate != null)
{
Data = Data.Where(c => c.UploadDate <= query.endDate);
}
if (query.startDate != null)
{
Data = Data.Where(c => c.UploadDate >= query.startDate);
}
var data = Data.ToList();
if (!data.Any())
{
var message = string.Format("No data found");
return Request.CreateErrorResponse(HttpStatusCode.NotFound, message);
}
return Request.CreateResponse(HttpStatusCode.OK, data);
}
我不清楚,如果这是测试post方法的正确方法,或者我需要在上面的控制器中添加更多代码。请指教。非常感谢。
答案 0 :(得分:1)
fiddler中最重要的一点是post请求中的Content-Type头规范。 Web API具有基于请求标头和内容协商器在管道中的注册的内容协商概念。有关详细信息,请参阅here。
在你的情况下:
Content-Type:application / json;字符集= UTF-8
以下是来自小提琴作曲家的整个请求:
User-Agent: Fiddler
Host: localhost:26572
Content-Length: 16
Content-Type: application/json; charset=utf-8
以下是请求正文:
{"name":"hello"}
通过此帖子请求,您应该能够继续。