Реагировать на запрос собственного сообщения с помощью запроса на выборки

Я наткнулся на следующую ошибку. На данный момент я разрабатываю приложение для Android с React Native, поэтому планирую использовать выборку для выполнения почтового запроса для меня.

fetch("https://XXreachable-domainXX.de/api/test", { method: "post", body: JSON.stringify({ param: 'param', param1: 'param', }) } ) .then((response) = > response.json() ) . then((responseData) = > { ToastAndroid.show( "Response Body -> " + JSON.stringify(responseData.message), ToastAndroid.SHORT ) }) . catch((error) = > { console.warn(error); }) ; 

Приложение теперь выдает ошибку:

TypeError: сбой сетевого запроса

Когда я меняю код на GET-Request, он работает нормально, в браузере с окном window.alert () в качестве возврата он классный, а также расширение chrome Postman корректно возвращает данные.

Solutions Collecting From Web of "Реагировать на запрос собственного сообщения с помощью запроса на выборки"

Ошибка React Native довольно бесполезна, поэтому сначала нужно получить фактическую базовую ошибку. Самый простой способ – написать небольшую собственную программу, которая просто выполнит тот же запрос, используя HttpsURLConnection .

Для меня фактическая ошибка java.security.cert.CertPathValidatorException: Trust anchor for certification path not found. Который имеет хорошо известное решение: https://developer.android.com/training/articles/security-ssl.html#MissingCa

Вероятно, это и ваш случай, учитывая, что браузеры и почтальон не имеют проблем с запросом. Чтобы проверить его, запустите openssl s_client -connect XXreachable-domainXX.de:443 -showcerts . Если есть ошибки сертификата, исправьте их в первую очередь, это может избавить вас от необходимости писать собственную программу.

Изменить: на самом деле самый простой способ увидеть все основные ошибки android для реакции native – это просто запустить «adb logcat» в терминале

Разработка с использованием ОС Windows / PHP для встроенного сервера / реагирования на Android на устройстве:

  • Проверить локальный IP-адрес сервера ( ipconfig ), например 172.16.0.10
  • В ответной нативной fetch используйте этот URL-адрес и правильный порт ( fetch('http://172.16.0.10:8000/api/foo) )
  • Запустить встроенный PHP-сервер с этим конкретным IP-адресом вместо localhost: php -S 172.16.0.10:8000 ...
  • Отключить брандмауэр Windows для частных сетей

Это фиксировало проблему соединения между телефоном Android и локальным сервером для меня.

Пожалуйста, обратитесь к ссылке: https://github.com/facebook/react-native/issues/5222#issuecomment-170239302

У меня была серьезная проблема, делающая то же самое на эмуляторе Android. На iOS одобрение домена в info.plist было необходимо. Чтобы быть ясным, я пытался войти в свой .NET-хостинг API.

Исправление заключалось в том, чтобы убедиться, что данные для сообщений были параметризованы (я уверен, что это слово)

 export const loginUser = ({ userName, password }) => { const data = `UserName=${userName}&Password=${password}&grant_type=password` return (dispatch) => { dispatch({ type: LOGIN_USER }) fetch(URL_LOGIN, { method: 'POST', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json', }, body: data // body: { // UserName: userName, // Password: password, // grant_type: 'password' // } }) .then((response) => { loginUserSuccess(dispatch, response) }) .catch((response) => { loginUserFailed(dispatch, response) }) }; };