#c# #asp.net-core #dotnet-httpclient
#c# #asp.net-core #dotnet-httpclient
Вопрос:
Здравствуйте, я столкнулся со следующей проблемой:
Я пытаюсь отправить http
POST
запрос на сервер, ожидающий список объектов (json). Тело запроса выглядит следующим образом: {"context":3}
. Если тело запроса не прочитано, операция не завершится ошибкой, вместо этого она вернет больше объектов (тело действует как фильтр).
Я пытаюсь понять, почему request body
не принимается во внимание, поскольку я всегда получаю все объекты.
[TestCase]
public async Task CanGetFromAws()
{
var data = new { context = 3 };
var raw = JsonConvert.SerializeObject(data);
HttpClient client = new HttpClient();
var content = new StringContent(raw);
HttpRequestMessage msg = new HttpRequestMessage
{
Method = HttpMethod.Post,
Content = content,
RequestUri =new Uri(URL)
};
var response=await client.SendAsync(msg);
var payload =await response.Content.ReadAsStringAsync();
}
Из postman
это работает, тело запроса считывается, и я получаю отфильтрованный результат, я также пробовал с RestSharp
, и снова это работает:
[TestCase]
public async Task CanGetFromAwsWithRESPSharp()
{
var data = new { context = 3 };
var raw = JsonConvert.SerializeObject(data);
var client = new RestClient(URL);
var request = new RestRequest(Method.POST);
request.AddHeader("content-type", "application/json");
request.AddParameter("application/json", raw, ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
var dt = response.Content; //gets filtered results
}
Может ли кто-нибудь объяснить мне, в чем может быть проблема, почему мое тело запроса не рассматривается в первом случае?
P.S URL
Является string
константой, не относящейся к делу.
Комментарии:
1. Вы не задаете
Content-Type
в том первом примере. напримерnew StringContent(raw, Encoding.UTF8, "application/json")
;