#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»);