如何在提琴手中测试post方法?

时间:2014-06-10 10:08:47

标签: asp.net-mvc linq asp.net-web-api fiddler

我试图在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方法的正确方法,或者我需要在上面的控制器中添加更多代码。请指教。非常感谢。

1 个答案:

答案 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"}

通过此帖子请求,您应该能够继续。