Запрос API GET возвращает HTML/текст вместо JSON

Вопрос: Я впервые работаю с RESTful API, Xamarin и т.д. До сих пор я создал простой REST API. Я написал ему вызов GET, что, если я напишу http://localhost: [num]/api/Name, он вернет JSON файл с соответствующей информацией Emu. Я проверил это с Почтальоном, поэтому я знаю, что это работает. Сейчас я написал приложение, которое будет вызывать

Вопрос:

Я впервые работаю с RESTful API, Xamarin и т.д. До сих пор я создал простой REST API. Я написал ему вызов GET, что, если я напишу http://localhost: [num]/api/Name, он вернет JSON файл с соответствующей информацией Emu. Я проверил это с Почтальоном, поэтому я знаю, что это работает.

Сейчас я написал приложение, которое будет вызывать этот API, чтобы перехватить эту информацию и затем отобразить ее. До сих пор я подключил его к серверу, на котором размещен мой API, но я не могу заставить его вернуть JSON. Вместо этого он, кажется, возвращает текст /HTTP.

Из того, что я искал в предыдущих потоках, кажется, что мне не хватало заголовков, запрашивающих этот ответ в формате JSON. Когда я добавил код, который был в официальной документации .NET на веб-сайте Microsoft, у меня возникли проблемы с моим Json Deserialiser. Я также добавил информацию в шапку, чтобы убедиться, что она возвращает json.

Вот код для функции:

async private void Submit_OnClicked(object sender, EventArgs e) { var nameValue = EmuName.Text; var baseAddr = new Uri(«http://my_url/HelloEmu/»); var client = new HttpClient { BaseAddress = baseAddr }; client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue(«application/json»)); string url = (string)nameValue; var returnedJson = await client.GetStringAsync(url); Models.EmuItemModel MyEmu = JsonConvert.DeserializeObject<Models.EmuItemModel>(returnedJson); ReturnedName.Text = MyEmu.Name; ReturnedAge.Text = MyEmu.Age.ToString(); ReturnedWeight.Text = MyEmu.Weight.ToString();

Мой код на самом деле ошибается в строке ReturnedWeight.Text = MyEmu.Weight.ToString() Но я предполагаю, что более серьезная проблема возникает во время десериализации объекта, потому что он, по-видимому, “пропускает” предыдущие две строки, когда я запускаю его в отладчик.

Когда я запускаю его в Visual Studio 2019, значение “returnJson” таково:

«<html><head><meta http-equiv=»refresh» content=»0;url=http://lookup.t-mobile.com/search/?q=http://my_url/HelloEmu/Keith&t=0″/></head><body><script>window.location=»http://lookup.t-mobile.com/search/?q=»+escape(window.location)+»&r=»+escape(document.referrer)+»&t=0″;</script></body></html>»

Я думаю, что это вывод HTML. Буду рад любым подсказкам о том, что на земле я делаю неправильно!

РЕДАКТИРОВАТЬ: Так как почти кажется, что HTML возвращает сообщение об ошибке, возможно, это может сделать с моим URL-адресом??? Я опубликовал сайт, используя метод файловой системы. Поэтому для доступа к API в Postman я буду использовать http://localhost: [port]/api/values, при вызове моего веб-сайта в обычном старом браузере он переходит на http://my_url/HelloEmu. Я получаю 403 метод “без каталога” взамен…

РЕДАКТИРОВАТЬ: Вот код Почтальона: введите описание изображения здесь

Лучший ответ:

Обычно это происходит потому, что отсутствуют заголовки или какой-то другой некорректный запрос. Загрузите RestSharp DLL из NuGet, и затем вы можете использовать следующее, в почтальоне, перейти к “Код”:

И выберите С#, вы увидите фрагмент кода (Пример):

Оцените статью
Добавить комментарий