2012-02-24 93 views
2

方法調用在沒有請求主體的情況下成功。當我在Request body下面使用時,我得到HTTP/1.1 400 Bad Request。你是否看到下面的要求身體有任何明顯的問題?在Fiddler2中請求POST方法的主體

請求體

{ 
    "_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

感謝,

+0

嗯JSON數據和POST標題看起來不錯。嘗試調試服務器代碼,如果可能的話找出它爲什麼返回400? – 2012-02-25 00:03:47

+0

查看上面的更新。當請求正文出現在Fiddler2中時,控件不會採用此方法。但是,如果沒有請求正文,控件確實會採用這種方法。 – codematrix 2012-02-25 00:09:04

+0

你給Fiddler的URL是什麼? – 2012-02-25 00:12:59

回答

3

我能得到您的代碼工作,但我不得不作出一些修改。

  1. 我不得不將查詢字符串攜帶的數據移動到主體本身,否則它不起作用。我不得不擺脫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; } 
} 

服務器端方法:

[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

+0

即使進行了這些更改,我仍然看到相同的問題。您能否爲我提供您在Fiddler2請求正文中使用的JSON。 – codematrix 2012-02-27 18:10:54

+0

我的答案已經貼在上面了。我試過了,它對我來說工作得很好。讓我張貼一些屏幕截圖 – 2012-02-27 18:25:48

6

我改變了我的服務像上面張貼,並沒有工作,直到我發現提供的第一個屏幕截圖。在提琴手頭是行

內容類型:應用程序/ JSON

這讓我將數據發送到該服務。在將返回類型更改爲字符串後,我能夠獲取原始數據。

相關問題