Я впервые работаю с 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 метод "без каталога" ...
РЕДАКТИРОВАТЬ: Вот код почтальона: введите описание изображения здесь