StatusCode: 415, ReasonPhrase: «Неподдерживаемый тип носителя» - PullRequest
0 голосов
/ 01 марта 2019

Я потратил 3 дня, читая все статьи, связанные здесь и на других сайтах, об этой ошибке, но безуспешно!Теперь мне нужна помощь.

ОШИБКА:

{StatusCode: 415, ReasonPhrase: 'Unsupported Media Type', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:{
...server's informations...
Strict-Transport-Security: max-age=2592000
X-Android-Received-Millis: 1551400026958
X-Android-Response-Source: NETWORK 415X-
Android-Selected-Protocol: http/1.1
X-Android-Sent-Millis: 1551400026857
X-Powered-By: ASP.NETContent-Length: 0}}

МЕТОД: Проблема появляется в: request.PostAsync (URL,param) .GetAwaiter (). GetResult ();

public static string RegisterPerson(Person p)
{
string msg = "";
string URL = URLbase + "person/register"; //--URL RIGHT, TESTING IN POSTMAN, INSERT DATA NORMALLY
   FormUrlEncodedContent param = new FormUrlEncodedContent(new[] {
    new KeyValuePair<string, string>("Name", p.Name),
    new KeyValuePair<string, string>("Phone", p.Fone),
    new KeyValuePair<string, string>("Birth", p.Birth),
});

HttpClient request = new HttpClient();
request.DefaultRequestHeaders.Accept.Clear();
request.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

HttpResponseMessage response = request.PostAsync(URL, param).GetAwaiter().GetResult(); // <===ERROR HERE

switch (response.StatusCode)
{
case HttpStatusCode.OK:
msg= "SUCCESS";
break;
....

Заранее спасибо!

1 Ответ

0 голосов
/ 01 марта 2019

Итак, чтобы ответить на вопрос первым, я бы поспорил, что вам нужно установить заголовок «Content-Type», так как он жалуется на неправильный тип носителя (вы устанавливаете то, что вы готовы принять, а не то, что выотправляем).Также ожидает ли служба кодированный контент application / x-www-form-urlencoded (это то, что вы отправляете)?Если это так, укажите это как Content-Type, но в наши дни это не так обычно.

Это классический WebApi или .net Core?Я спрашиваю, как будто это последний, измените ваш метод, чтобы быть нестатичным, введите IHttpClientFactory и используйте его для создания вашего клиента.Преимущество заключается в том, что вы можете создавать клиентов, которые соответствуют вашим потребностям, при инъекции (Startup.cs) и использовать их повторно, а также избегать проблем с сокетами в масштабе (учтите, что это требует большой нагрузки, так что если это не то, что вам нужно дляне волнуйся)Тем не менее, он делает код контроллера более чистым, поэтому он может быть полезен с точки зрения читабельности кода, что для меня, как правило, то, что я оптимизирую.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...