Localhost WEB Api всегда возвращает 400 Bad Request

Я использую настоящее устройство Android. Когда я пытаюсь позвонить в WEB Api, я получаю 400 Bad Request. API расположен на локальном хосте (IIS Express). Но если вы вызываете Api из приложения Windows, тогда все в порядке.

Строка API приложения Windown - https://localhost:44399/api/v1/families - возврат 200 ок

Строка API приложения Android - https://192.168.0.102:44399/api/v1/families - вернуть 400 Bad Request

Мой ipconfig: Адаптер беспроводной локальной сети Wi-Fi:

DNS-суффикс для конкретного соединения. :

Локальный адрес IPv6. . . . . : fe80 :: 4dbf: c945: 4125: 74c8% 5

IPv4-адрес. . . . . . . . . . . : 192.168.0.102

Маска подсети . . . . . . . . . . . : 255.255.255.0

Шлюз по умолчанию . . . . . . . . . : 192.168.0.1

Пробовал разными способами: подключился к локальной сети, к своей wifi сети, ничего не помогло.


person Espi4U    schedule 16.04.2020    source источник
comment
вам нужно посмотреть журналы IIS. Потенциально включите ведение журнала запросов, чтобы вы могли подробно сравнить запрос, который работает, с тем, который не работает.   -  person Jason    schedule 16.04.2020
comment
400 - на стороне клиента. IIS еще не достиг   -  person Espi4U    schedule 16.04.2020
comment
Гм, нет. В этих сценариях IIS отклонил клиентский HTTP-запрос, потому что запрос не соответствовал правилам анализа HTTP-сервера сервера, или он превышал временные ограничения, или не выполнял какое-либо другое правило, которому IIS или HTTP.sys должны подчиняться входящие запросы. IIS отправляет клиенту статус HTTP 400 - недопустимый запрос, а затем разрывает TCP-соединение.   -  person Jason    schedule 16.04.2020


Ответы (3)


Запросы будут перенаправлены на «192.168.0.102», но по умолчанию это не работает для IIS Express.

Пожалуйста, следуйте приведенным ниже инструкциям.

Перед этим замените адрес API вашего приложения https://localhost:44399/api/v1/families на https://192.168.0.102:44399/api/v1/families.

  1. Загрузите Jexus Manager и установите.

  2. Откройте Jexus Manager с правами администратора.

  3. Нажмите здесь и настройте IIS (проверьте свою версию VS) - Управление серверами IIS Express.

  4. Зайдите в Edit site -> bindings

Менеджер Jexux

  1. Добавьте новую привязку с правильными значениями, и имя хоста должно быть локальным IP-адресом вашего хост-компьютера. В вашем случае 192.168.0.102.

    • after the add new binding, it shows as, ( in here my local IP address is 192.168.1.101. after the binding your one it should be your host machine IP address.) enter image description here
  2. Запускаем сервер.

person shalitha senanayaka    schedule 16.04.2020

Пока похоже, что это правильное поведение. Вы получаете неверный запрос 400, что означает, что вы достигли сервера, но не отправляете запрос правильно.

Возможно, вы неправильно отправляете тело или параметры или их не хватает.

Попробуйте взглянуть на то, что ваше устройство Android пытается отправить на сервер, и, скорее всего, вы обнаружите свою проблему.

person MRSessions    schedule 16.04.2020

@MRSessions абсолютно прав. мы достигаем сервера приложений. Но есть проблема в формате запроса. Возможно, заголовок запроса. Попробуйте использовать разные заголовки, например Accept: application / json, content-type: application / json и т. Д.

Вы можете легко сопоставить то, что отправляется, когда вы нажимаете его в браузере или почтальоне, и на Android через Logcat. Вот как:

Попробуйте использовать почтальон для тестирования API и запишите все заголовки. Теперь вы будете знать все подробно о заявке.

Затем используйте эту библиотеку Http Logging Interceptor для регистрации всех запросов. послан. Но в этом случае вам нужно использовать OkHttpClient или Retrofit.

Я также много раз сталкивался с такими проблемами с плохими запросами. Я читаю их после сравнения формата запроса почтальона и формата запроса Android. Перехватчик Http Logging Interceptor будет отображать все данные о формате запроса в Logcat. Вы также можете прочитать их в журналах доступа вашего сервера.

В этом видеокурсе для Android он использует Laravel, и я предлагаю тот же способ в Android. Пожалуйста, попробуйте, это может вам помочь.

https://www.youtube.com/watch?v=StFvAYmws?v=StFvAYm3/watch?v=StFvAYMW&hl=ru / а>

person Varun Singla    schedule 16.04.2020