Отправка JSON с использованием httpClient не приходит на сервер

У меня есть этот код:

String json = "{\"name\":\"listFiles\"}";

// Wrap our JSON inside a StringContent which then can be used by the HttpClient class
HttpContent httpContent = new StringContent(json, Encoding.UTF8, "application/json");

HttpResponseMessage response = client.PostAsync(endPoint, httpContent).Result;
response.EnsureSuccessStatusCode();

Когда это сообщение закончено, я вижу, что сервер получил вызов, но содержимое пустое (размер содержимого правильный, но у него нет данных).

Я пытался выяснить, есть ли в httpContent данные json, но я не вижу никаких данных.

Зачем этот код, отправлять пустые данные на сервер и почему я не вижу никаких данных внутри httpContent?

Как я могу извлечь json обратно из httpContent, чтобы я мог убедиться, что он правильно инициализирован?

Значение httpContent

где его содержание?

Edit1

Я проверил сервер, и я получаю эти данные:

POST /osc/command/execute HTTP/1.1
Content-Type: application/json
Accept: application/json, application/xml, text/json, text/x-json, text/javascript, text/xml
User-Agent: RestSharp/106.2.1.0
Host: 192.168.1.138
Content-Length: 32
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

когда я отправляю данные с помощью библиотеки Restshart следующим образом:

var client = new RestClient("http://192.168.1.138/osc/command/execute");
var request = new RestRequest(Method.POST);
request.AddHeader("content-type", "application/json");
request.AddParameter("application/json", "{\n  \"name\":\"camera.listFiles\"\n}\n", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);

когда я отправляю тот же код с помощью почтальона, я получаю это на сервере:

POST /osc/command/execute HTTP/1.1
cache-control: no-cache
Postman-Token: 83ecd3ec-a85d-41a6-ab0e-029ee1690cce
Content-Type: application/json
User-Agent: PostmanRuntime/6.3.2
Accept: */*
Host: 192.168.1.138
accept-encoding: gzip, deflate
content-length: 32
Connection: keep-alive

{
 "name":"camera.listFiles"
}

так почему в конце пакета, который я читаю, нет ничего с содержимым, которое я разместил?

Редактировать 2

Я разместил данные на " http://httpbin.org/post", и результат, который я получаю:

{
 "args": {},
 "data": "{\"name\":\"listFiles\"}",
 "files": {},
 "form": {},
 "headers": {
   "Accept": "application/json",
   "Connection": "close",
   "Content-Length": "20",
   "Content-Type": "application/json; charset=utf-8",
   "Expect": "100-continue",
   "Host": "httpbin.org"
 },
 "json": {
   "name": "listFiles"
 },
 "origin": "91.240.174.154",
 "url": "http://httpbin.org/post"
}

Я не вижу здесь никакой полезной нагрузки, но я вижу json с моими данными в нем. Вопрос заключается в том, почему нет полезной нагрузки, как объясняется в этом документе: как параметры отправляются в запросе HTTP POST?

Note1

Что я вижу, так это то, что когда я отправляю сообщение на " http://httpbin.org/post", соединение закрывается, но когда я отправляю сообщение на свой сервер, соединение остается активным, какая разница? Есть ли вероятность того, что я не читаю все данные с клиента на сервере, и я должен ждать другого пакета?

1 ответ

У меня нет репутации, чтобы комментировать ваше сообщение (именно здесь я и хотел разместить этот комментарий - поэтому, пожалуйста, будьте осторожны со мной в отношении отрицательных голосов). Но у нас была проблема, почти такая же, как у вас сегодня. После консультации с коллегой по этому вопросу мы смогли получить отклик JSON, изменив вашу строку:

HttpResponseMessage response = client.PostAsync(endPoint, httpContent).Result;

в

var response = client.PostAsync(endPoint, httpContent).Result.Content.ReadAsStringAsync();

Это показал наш JSON

Другие вопросы по тегам