2014-10-17 83 views
3

下面是Web應用程序中請求的樣子。在RestSharp中複製此PUT請求

Request URL:http://myurl.com/rest 
Request Method:PUT 
Status Code:200 Ok 
Request Headersview source 
Accept:*/* 
Accept-Encoding:gzip, deflate, sdch 
Accept-Language:en-US,en;q=0.8 
Connection:keep-alive 
Content-Length:60 
Content-Type:application/json 
Cookie:ui_dom_other=block; session=sessionkey; acct_table#pageNavPos=1; ui_usr_feat=block 
Host:http://myurl 
Origin:http://myurl.com 
Referer:http://myurl.com/referer 
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36 
Request Payload view parsed 
{"table":"users","settings":[{"name":"dnd","value":"true"}]} 
Response Headersview source 
Cache-Control:no-cache 
Content-Length:2 
Content-Type:application/json 

的數據是在請求負載場

{"table":"users","settings":[{"name":"dnd","value":"true"}]} 

下面是我當前的C#RestSharp代碼

  // Initiate Rest Client 
      var client = new RestClient("http://myurl.com"); 
      var request = new RestRequest("resturl/restrequest"); 
      // Set headers, method and cookies 
      request.Method = Method.PUT; 
      request.AddHeader("Content-Type", "application/json"); 
      request.AddHeader("Accept", "*/*"); 
      request.AddCookie("session", sessionKey); 
      // Set Data format 
      request.RequestFormat = DataFormat.Json; 
      // Set Data 
      string theString = "{'table':'users','settings':[{'name':'dnd','value':'true'}]}"; 
      request.AddBody(theString); 
      // Execute 
      var test123 = client.Execute(request); 

我已經能夠成功地做到我所有的GET/POST調用但是PUT並未成功。

提琴手捕捉

Web應用程序 - 工作

PUT http://myurl HTTP/1.1 
Host: http://myurl 
Connection: keep-alive 
Content-Length: 60 
Origin: hhttp://myurl 
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36 
Content-Type: application/json 
Accept: */* 
Referer: http://myurl 
Accept-Encoding: gzip, deflate, sdch 
Accept-Language: en-US,en;q=0.8 
Cookie: ui_dom_other=block; session=sessionkey; acct_table#pageNavPos=1; ui_usr_feat=block 

{"table":"users","settings":[{"name":"dnd","value":"true"}]} 

C#應用程序 - 不工作

PUT http://myurl HTTP/1.1 
Accept: */* 
User-Agent: RestSharp/105.0.1.0 
Content-Type: text/xml 
Host: http://myurl 
Cookie: session=sessionkey 
Content-Length: 10 
Accept-Encoding: gzip, deflate 

<String /> 
+0

它怎麼不成功?你想要什麼和你目前得到什麼? – wal 2014-12-11 23:57:28

+0

它應該像更新Web應用程序一樣將dnd的後端值更新爲true。目前它只是不更新​​該值。對於成功或失敗的呼叫都沒有迴應。我將得到一個wireshark捕獲並立即添加到這個問題。 – Matt 2014-12-12 00:02:55

+0

提琴手捕捉會更好 – wal 2014-12-12 00:09:57

回答

1

而不是添加一個字符串作爲有效載荷考慮增加一個對象:

request.AddBody(new { table = "users", settings = new[] { new { name = "dnd", value = "true" } } }); 
+0

這是成功的。數據現在在提琴手捕捉中正確顯示,並相應地更新了後端。 – Matt 2014-12-12 00:50:57

+0

我必須等23小時才能獲得賞金。我一定會跟進。 – Matt 2014-12-12 00:52:28