Запрос Httppost на Xamarin Android

#xamarin #webclient

#xamarin #webclient

Вопрос:

Я пытаюсь выполнить post-вызов моего веб-Api, который находится на локальном хосте. Но я получаю следующую ошибку

результат = {System.Net.WebException: удаленный сервер вернул ошибку: (415) Неподдерживаемый тип носителя. в System.Net.HttpWebRequest.EndGetResponse (System.IAsyncResult (AsyncResult) [0x0005e] в /Users/builder/data/lines/3511/f4db8a57/source/mono/mcs/class/System/Sy…

Кто-нибудь может помочь? Ниже приведен мой код:

 private void click (Object sender, EventArgs e)
    {
        UserInfo user = new UserInfo(1, "hellohello@gmail.com", "helloss");
        String data = JsonConvert.SerializeObject(user);
        WebClient wc = new WebClient();
        wc.UploadStringAsync(new Uri("http://192.168.206.2:155/api/register"), data);
        wc.UploadStringCompleted  = Wc_UploadStringCompleted;
    }

    private void Wc_UploadStringCompleted(object sender, UploadStringCompletedEventArgs e)
    {
        var result = e.Error;
    }
 

Комментарии:

1. Отлаживали ли вы свой проект WebAPI во время запуска приложения xamarin, чтобы убедиться, что это не проблема с вашим серверным кодом?

2. @chriszumberge проверьте мой отредактированный вопрос.

3. попробуйте добавить заголовок accept в свой WebClient.. wc.Headers.Add(«Accept», «application/ json»);

4. Я бы поспорил, что вам не хватает заголовка accept , а заголовка Content-type . Также должно быть application / json.

5. это сработало @KaiBrummund.. спасибо миллион. пожалуйста, добавьте его в качестве ответа, чтобы я мог принять

Ответ №1:

Пока сервер получает от вас только строку и не может знать, является ли это json, xml или чем-то еще. Вам просто нужно сказать ему.

Вы можете сделать это WebClient через:

 wc.Add("Content-Type", "aplication/json");
 

Если вы используете HttpClient , вы должны установить ist через Content свойство:

 request.Content = new StringContent("json", Encoding.UTF8, "application/json");
 

Ответ №2:

Спецификация HTTP гласит:

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

Похоже, у вашего сервера возникли проблемы с форматом … попробуйте добавить заголовки с помощью .Add(«Accept», «aplication / json»);