使用Fiddler时,Rest WCF Post Json body参数始终为null

时间:2013-05-07 13:50:01

标签: wcf web-services rest post fiddler

过去几天我一直在努力解决这个问题。我已经研究过这个问题,并尝试了解决方案。然而,它没有奏效。我有REST WCF Post方法

     [OperationContract(Name = "ImportRawJson")]
    WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.WrappedRequest,
        ResponseFormat = WebMessageFormat.Json, RequestFormat=WebMessageFormat.Json,
            UriTemplate = "ImportRawJson/username/{username}/password/{password}/fileName/{fileName}")]
    string ImportRawJson(string username, string password, string fileName, string jsonStream);

我可以通过网络客户端使用它。然而,当我尝试通过Fiddler调用时,body参数总是导致null并且我得到一个异常。

小提琴手: 发布http:// localhost /TimesheetService/Timesheet.svc/ImportRawJson/username/user/password/pwd/fileName/testfiddler

请求标题: 用户代理:Fiddler 主持人:localhost 内容长度:32 Content-Type:application / json;字符集= UTF-8

申请机构: {“jsonStream”:{“ImportRaw”:{“TestXml”:{“xml”:“test”}}}}

错误: HTTP / 1.1 400错误请求 缓存控制:私有 内容长度:127 Content-Type:application / json;字符集= utf-8的 服务器:Microsoft-IIS / 7.5 X-AspNet-Version:4.0.30319 Set-Cookie:ASP.NET_SessionId = wh4qxcu1x0vmiv45mmzuuaup;路径= /;仅Http X-Powered-By:ASP.NET 日期:2013年5月7日星期二14:00:58 GMT

{“ErrorCode”:“Error”,“Message”:“过程或函数需要参数'jsonStream',这是未提供的。”}

有关如何传递body参数的任何帮助。我真的很感激。我被困在这一点上。请帮忙!!提前致谢

1 个答案:

答案 0 :(得分:1)

您的代码中存在一些问题。首先,如果“JSON流”是指任何JSON文档,则您将无法使用类型string作为代码。相反,您需要将其视为Stream(基本上可以接受任意输入)。如果将输入作为字符串,则应将JSON字符串传递给它。由于您将主体类型设置为WrappedRequest,因此需要将JSON字符串包装在对象中,其中参数名称是成员名称,以及要传递给您的值发挥作用。例如,要将字符串hello world传递给您的操作,您需要传递此请求正文:

{"jsonStream":"hello world"}

但是如果我猜错了,你想要任意JSON,你需要使用Stream参数。 http://blogs.msdn.com/b/carlosfigueira/archive/2008/04/17/wcf-raw-programming-model-receiving-arbitrary-data.aspx上的博客文章提供了有关如何实施它的更多信息。

相关问题