2014-10-17 2 views
3

Ниже приведен пример запроса в веб-приложении.Репликация этого запроса PUT в RestSharp

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 не был успешным.

Скрипач Capture

Web App - Рабочая

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

+0

Он должен обновлять значение backend для dnd до true, как веб-приложение. На данный момент он просто не обновляет это значение. И нет ответа для успешного или неудачного вызова. Я получу захват проводов и добавлю его к вопросу в одно мгновение. – Matt

+0

fiddler capture будет лучше – wal

ответ

1

Вместо добавления строки в качестве полезной нагрузки рассмотреть возможность добавления объекта:

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

Это был успех. Теперь данные отображаются правильно в захвате скрипача и соответственно обновили бэкэнд. – Matt

+0

Я должен подождать 23 часа, чтобы наградить щедростью. Я обязательно буду следовать. – Matt

Смежные вопросы