Reaccionar solicitud de correos nativos mediante solicitudes de recuperación falla en la solicitud de red
He encontrado el siguiente error. Por el momento estoy desarrollando una aplicación para Android con React Native, por lo tanto, estoy planeando usar fetch para hacer una solicitud de correos para mí.
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); }) ;
La aplicación arroja ahora un error:
- Evaluando MapboxGLManager.mapStyles
- No se puede conectar al depurador de cromo desde Device / Genymotion
- No se pudo obtener BatchBridge, asegúrese de que su paquete está correctamente embalado
- Siga la ubicación del usuario en React Native AirBnb MapView
- ¿Cómo puedo crear un borde diagonal en React Native?
TypeError: Error en la solicitud de red
Cuando cambio el código a un GET-Request está funcionando bien, en el navegador con un window.alert () como un retorno es genial y también la extensión de cromo Postman devuelve datos correctamente.
- Reaccionar Native Android y Genymotion
- Passprops equivalente para Navigator?
- `OnEndReached` no se dispara en ScrollView animado
- React-Native ListView renderRow emite pases de paso. El camino correcto o el camino equivocado
- No se puede ejecutar React-Native UIExplorer example project
- Cómo guardar la entrada en el calendario nativo (Android e iOS) en reaccionar nativo?
- Reaccionar nativo con Genymontion lanzando simultáneamente Excepción
- React-Native, Android, Genymotion: El servidor ADB no ACK
El error de este React Native es bastante inútil, por lo que necesita obtener el error subyacente real primero. La forma más sencilla es escribir un pequeño programa nativo que sólo realizaría la misma consulta usando HttpsURLConnection
.
Para mí, el error real fue java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
Que tiene una solución bien conocida: https://developer.android.com/training/articles/security-ssl.html#MissingCa
Esto es muy probable que su caso también, dado que los navegadores y Postman no tienen ningún problema con la solicitud. Para comprobarlo ejecute openssl s_client -connect XXreachable-domainXX.de:443 -showcerts
. Si hay errores de certificado, solucionarlos primero, podría ahorrarle tiempo escribiendo el programa nativo.
Edit: en realidad la forma más fácil de ver todos los errores android subyacentes para reaccionar nativo es simplemente ejecutar 'adb logcat' en el terminal
Desarrollar con Windows OS / PHP incorporado en el servidor / reaccionar-nativo Android en el dispositivo:
- Compruebe la dirección IP local del servidor (
ipconfig
), por ejemplo 172.16.0.10 - En react-native
fetch
utilice esta URL y el puerto adecuado (fetch('http://172.16.0.10:8000/api/foo)
) - Ejecutar PHP servidor incorporado con esta IP específica en lugar de la localhost:
php -S 172.16.0.10:8000 ...
- Desactive el firewall de Windows para las redes privadas
Eso solucionó el problema de conexión entre el teléfono Android y el servidor local para mí.
Por favor, consulte el enlace foillowing: https://github.com/facebook/react-native/issues/5222#issuecomment-170239302
Tuve un problema importante haciendo lo mismo en el emulador de Android. En iOS era necesario aprobar el dominio en el info.plist. Para ser claro, estaba intentando iniciar sesión en mi API web alojada en .NET.
La solución era asegurarse de que los datos de la entrada se parametrizaron (estoy bastante seguro de que es una palabra)
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) }) }; };
- Android Fuente personalizada Spannable Tipo de letra
- Cómo instalar / reemplazar en Android sin usar Eclipse