C # HttpClient, сокращающий URI во время запроса POST - PullRequest
0 голосов
/ 12 сентября 2018

Я пытаюсь сделать запрос POST в приложении C # UWP к определенной конечной точке.В результате я получаю только HTML-код с домашней страницы.При просмотре запроса я указываю всю конечную точку, но при выполнении запроса она просто поражает хост (без конечной точки).

Я пытаюсь POST: http://ip-address/api/devices/logs URIPOSTing to: http://ip-address

Код:

Uri requestUri = new Uri("http://ip-address/api/devices/logs");
var objClint = new System.Net.Http.HttpClient();
System.Net.Http.HttpResponseMessage respon = await objClint.PostAsync(requestUri , new StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(text), System.Text.Encoding.UTF8, "application/json"));
string responJsonText = await respon.Content.ReadAsStringAsync();

Я должен вернуть результат запроса POST (например, созданный объект), но я просто получаю HTML отдомашняя страница / целевая страница.

Я попытался установить BaseAddress объекта objClient и просто пройти через остальную конечную точку, пройти через всю конечную точку в качестве параметра в PostAsync и добавить UriKind.Absolute.

Я действительно не знаю, что здесь делать.

Если я запускаю GetAsync на том же URI, это не сокращает URI запроса и дает правильный ответ,

Что я могу сделать отсюда?

1 Ответ

0 голосов
/ 13 сентября 2018

Когда я проверяю ваш фрагмент кода, он работает как положено. Вы уверены, что POST доступен на этом маршруте? Вполне возможно, что код не усекает URL, а возвращаемый результат - просто перенаправление. Я бы проверил это первым.

В любом случае, здесь есть альтернативный способ сделать ваш запрос с теми же зависимостями, если вы хотите попробовать его другим способом, который также должен работать.

var baseUri = new Uri("http: //ip-address/");
var route = "/api/devices/logs";
using (var objClint = new HttpClient())
{
      objClint.BaseAddress = baseUri;
      var respon = await objClint.PostAsync(route, new StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(new { text = "text" }), System.Text.Encoding.UTF8, "application/json"));
}
...