2015-08-07 2 views
1

Я пытаюсь понять VSO git API. Я сделал получать запросы так успешно, как:C# HttpClient PostAsync с параметром JSON для VSO git API

using (var response = client.GetAsync(
         uri).Result) 
        { 
         response.EnsureSuccessStatusCode(); 
         var responseBody = await response.Content.ReadAsStringAsync(); 
         Console.WriteLine(responseBody); 
         ResponseInfo.Text = JsonHelper.FormatJson(responseBody); 
        } 

Я делаю это после установки client.DefaultRequestHeaders для базовой аутентификации и MEDIATYPE к применению/JSON.

Для почтовых запросов, документации VSO показывает это: enter image description here

Я понимаю, что параметры JSON. Однако я не уверен, как передать это в запрос на отправку в C#. Я попытался следующие:

string content = @"{ 
           ""refUpdates"": [ 
           { 
            ""name"": ""refs/heads/master"", 
            ""oldObjectId"": ""*old object id*"" 
           } 
           ], 
           ""commits"": [ 
           { 
            ""comment"": ""Test commit"", 
            ""changes"": [ 
            { 
             ""changeType"": ""edit"", 
             ""item"": { 
             ""path"": ""/foo.txt"" 
             }, 
             ""newContent"": { 
             ""content"": ""test"", 
             ""contentType"": ""rawtext"" 
             } 
            } 
            ] 
           } 
           ] 
          }"; 

      var stringToJson= new JavaScriptSerializer(); 
      var JSONoutput = stringToJson.Deserialize<object>(content); 
      StringContent stringContent = new StringContent(JSONoutput.ToString(), Encoding.UTF8, "application/json"); 

, а затем я прохожу, что в к

using (var response = client.PostAsync(uri, stringContent).Result) 
        { 
         response.EnsureSuccessStatusCode(); 
         var responseBody = await response.Content.ReadAsStringAsync(); 
         Console.WriteLine(responseBody); 
        } 

Я получаю 400 Bad Request ошибку. Я правильно передаю свои параметры? По сути, я беру строчную версию того, что дал мне учебник, конвертирует его в JSON, десериализует его, конвертирует в HTTPContent и передает в PostAsync. Я не могу придумать другого способа сделать это.

Благодарим вас за внимание!

ответ

1

Оказывается, я могу просто сделать

StringContent stringContent = new StringContent(content, Encoding.UTF8, "application/json"); 

версия строки объекта JSON достаточно для StringContent.

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