在Fiddler2中请求POST方法体

时间:2012-02-24 23:51:04

标签: wcf

方法调用成功,没有Request body。当我使用下面的Request body时,我得到HTTP / 1.1 400 Bad Request。你觉得下面要求身体有任何明显的问题吗?

请求正文

{ 
    "_userConfigData":{"UserName":"bXZpbmphbXVyaQ==", "FirstName":"User1", "LastName":"Last1", "ContactInfo":"None" }, 
    "_configResult": "Miscellaneous"
}

请求标题

User-Agent: Fiddler
Content-Type: application/json
Host: localhost:1706
Content-Length: 167

这是服务器端方法:

[OperationContract]
[WebInvoke(UriTemplate = "UpdateUserDetails/?_clientIP={_clientIP}&AdminName={AdminName}", Method = "POST", ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped)] 
public void UpdateUserDetails(UserConfigData _userConfigData, ConfigResult _configResult, string _clientIP, string AdminName)
{
    // 
}

以下是我与Fiddler2一起使用的网址:

http://localhost:1706/WCF/UserConfig/UserConfigService.svc/UpdateUserDetails?_clientIP=localhost&AdminName=admin

谢谢,

2 个答案:

答案 0 :(得分:7)

我改变了我的服务,就像上面的帖子一样,直到我注意到提供的第一个屏幕截图时它才起作用。在fiddler标题中是行

Content-Type:application / json

这允许我将数据发送到服务。将返回类型更改为字符串后,我可以恢复原始数据。

答案 1 :(得分:5)

我能够让你的代码工作,但我不得不做一些修改。

  1. 我不得不将查询字符串携带的数据移动到正文中,否则它不起作用。
  2. 我不得不摆脱BodyStyle Wraped选项。
  3. 无论如何,这是包含数据的更新模型对象:

    public class UserConfigData
    {
        public string UserName { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string ContactInfo { get; set; }
    }
    
    public class Result
    {
        public UserConfigData UserConfigData { get; set; }
        public string ConfigResult { get; set; }
        public string ClientIp { get; set; }
        public string AdminName { get; set; }
    }
    

    服务器端方法:

    [WebInvoke(UriTemplate = "UpdateUserDetails", Method = "POST", ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json)]
    public void UpdateUserDetails(Result result)
    {
        //
    }
    

    你传入的json:

    {
        "AdminName":"String content",
        "ClientIp":"String content",
        "ConfigResult":"String content",
        "UserConfigData":{
            "ContactInfo":"String content",
            "FirstName":"String content",
            "LastName":"String content",
            "UserName":"String content"
        }
    }
    

    更新: 提琴手请求屏幕截图: Fiddler request screen shot

    请求到达服务器UpdateUserDetails()处理程序: UpdateUserDetails