Код: Выделить всё
var m = new Dictionary
{
{ "key", "value" },
};
Код: Выделить всё
string jc = JsonConvert.SerializeObject(m); // "{ \"key\": \"value\" }"
Код: Выделить всё
string jc2 = JsonConvert.SerializeObject(jc); // "\"{\\\"key\\\":\\\"value\\\"}\""
Код: Выделить всё
var jsonContent = new StringContent(jc2, Encoding.UTF8, "application/json");
HttpResponseMessage response1 = await client1.PostAsync("http:...", jsonContent);
// response1.StatusCode == "OK")
Если я удалю вторую сериализацию, я получу ответ1.StatusCode = «BadRequest».
1 .Как объяснить такое поведение?
2.Можно ли использовать для отправки запроса этот код
Код: Выделить всё
var jsonContent = new FormUrlEncodedContent(jc);
P.S. На стороне сервера API есть только код шаблона ASP.NET Core Web API. Сначала я попытался передать однократную сериализацию с помощью строки JSONConvert и получил ошибку. Затем я посмотрел на сгенерированный код в Postman и увидел, что тело содержит контент, показанный в примере выше. Поэтому я использовал вторую сериализацию — чтобы получить рабочий код как в почтальоне. Его можно получить путем повторной сериализации. Хотя, возможно, это результат чего-то другого.
Код в API сервера:
Код: Выделить всё
[HttpPost]
public string Post([FromBody] string ukpJson)
{
return "Ok";
}

Подробнее здесь: https://stackoverflow.com/questions/791 ... t-via-http
Мобильная версия