在Fiddler2中请求POST方法体

cod*_*rix 3 wcf

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

请求机构

{ 
    "_userConfigData":{"UserName":"bXZpbmphbXVyaQ==", "FirstName":"User1", "LastName":"Last1", "ContactInfo":"None" }, 
    "_configResult": "Miscellaneous"
}
Run Code Online (Sandbox Code Playgroud)

请求标题

User-Agent: Fiddler
Content-Type: application/json
Host: localhost:1706
Content-Length: 167
Run Code Online (Sandbox Code Playgroud)

这是服务器端方法:

[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)
{
    // 
}
Run Code Online (Sandbox Code Playgroud)

这是我与Fiddler2一起使用的URL:

HTTP://本地主机:1706/WCF/UserConfig的/ UserConfigService.svc/UpdateUserDetails _clientIP =本地主机与AdminName =管理员

谢谢,

小智 7

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

Content-Type:application/json

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


Boj*_* Li 5

我能够使您的代码正常工作,但是我必须进行一些修改。

  1. 我必须将查询字符串携带的数据移入主体本身,否则将无法正常工作。
  2. 我必须摆脱BodyStyle Wraped选项。

无论如何,这是包含您的数据的更新的模型对象:

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; }
}
Run Code Online (Sandbox Code Playgroud)

服务器端方法:

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

您传入的json:

{
    "AdminName":"String content",
    "ClientIp":"String content",
    "ConfigResult":"String content",
    "UserConfigData":{
        "ContactInfo":"String content",
        "FirstName":"String content",
        "LastName":"String content",
        "UserName":"String content"
    }
}
Run Code Online (Sandbox Code Playgroud)

更新:提琴手请求屏幕截图: 提琴手要求屏幕截图

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