Wcf Fiddler2中POST方法的请求主体
方法调用在没有请求主体的情况下成功。当我使用下面的请求体时,我得到HTTP/1.1400错误请求。您是否发现下面的请求主体有任何明显的问题 请求主体Wcf Fiddler2中POST方法的请求主体,wcf,Wcf,方法调用在没有请求主体的情况下成功。当我使用下面的请求体时,我得到HTTP/1.1400错误请求。您是否发现下面的请求主体有任何明显的问题 请求主体 { "_userConfigData":{"UserName":"bXZpbmphbXVyaQ==", "FirstName":"User1", "LastName":"Last1", "ContactInfo":"None" }, "_configResult": "Miscellaneous" } 请求头 User-Age
{
"_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)
{
//
}
[WebInvoke(UriTemplate = "UpdateUserDetails", Method = "POST", ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json)]
public void UpdateUserDetails(Result result)
{
//
}
以下是我与Fiddler2一起使用的URL:
谢谢,我能够让你的代码正常工作,但我不得不做一些修改
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; }
}
服务器端方法:
[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)
{
//
}
[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请求屏幕截图:
请求将到达服务器UpdateUserDetails()处理程序:
我像上面的帖子一样更改了我的服务,直到我注意到提供的第一个屏幕截图,它才起作用。小提琴头上有一行 内容类型:application/json
这允许我向服务发送数据。将返回类型更改为string后,我能够返回原始数据。Hmm json数据和POST标题在我看来很好。如果可能的话,试着调试服务器代码以找出返回400的原因?请参阅上面的更新。当请求主体出现在Fiddler2中时,控件不会使用此方法。但是,如果没有请求主体,则控件会使用此方法。您给Fiddler的URL是什么?尝试将UserConfigData和ConfigResult聚合到父对象中,并让UpdateUserDetails()接受该对象?顺便说一句,如果你这么做了,你的json应该保持不变。我不确定这是否有效,但这似乎是一个对象格式匹配问题。我改变了方法如下,有一些改进。调用该方法,但userConfig为null。您知道相同的JSON是否也适用于此方法签名吗?public void UpdateUserDetails(UserConfigObject userConfig,string _clientIP,string AdminName)即使进行了这些更改,我仍然看到相同的问题。你能给我提供你在Fiddler2请求体中使用的JSON吗?我已经在上面的回答中粘贴了它们。我试过了,效果很好。让我发布一些屏幕截图