Я пытаюсь понять VSO git API. Я успешно сделал запросы Get следующим образом:
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 для Basic Authentication и Mediatype в application/json.
Для почтовых запросов документация VSO показывает следующее:
Я так понимаю, что параметры JSON. Однако я не уверен, как передать это в почтовый запрос на С#. Я пробовал следующее:
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. Я не могу придумать другого способа сделать это.
Спасибо за уделенное время!