Ketika saya membuat proyek baru menggunakan react-native init
(RN versi 0.29.1) dan memasukkan metode render ke film demo facebook publik API, itu melempar a Network Request Failed
. Ada jejak stack yang sangat tidak berguna dan saya tidak bisa men-debug permintaan jaringan di konsol chrome. Ini adalah pengambilan yang saya kirim:
fetch('http://facebook.github.io/react-native/movies.json')
.then((response) => response.json())
.then((responseJson) => {
return responseJson.movies;
})
.catch((error) => {
console.error(error);
});
javascript
react-native
fetch-api
Alek Hurst
sumber
sumber
http
->https
(jika mungkin) kemungkinan besar akan memperbaiki masalah Anda192.168.1.25:3000
dariifconfig
tanpa mengikat server saya ke ip iturails server --binging=192.168.1.25 --port=3000
Jawaban:
Masalahnya di sini adalah bahwa iOS tidak mengizinkan permintaan HTTP secara default, hanya HTTPS. Jika Anda ingin mengaktifkan permintaan HTTP, tambahkan ini ke
info.plist
:sumber
Tidak disarankan untuk mengizinkan semua domain untuk http. Buat pengecualian hanya untuk domain yang diperlukan.
Sumber: Mengkonfigurasi Pengecualian Keamanan Transport Aplikasi di iOS 9 dan OSX 10.11
Tambahkan berikut ini ke file info.plist aplikasi Anda:
sumber
Saya menggunakan
localhost
alamat itu, yang jelas salah. Setelah menggantinya dengan alamat IP server (di jaringan emulator itu), ia bekerja dengan sempurna.Edit
Di Android Emulator, alamat mesin pengembangan adalah
10.0.2.2
. Penjelasan lebih lanjut di siniUntuk Genymotion, alamatnya adalah
10.0.3.2
. Info lebih lanjut di sinisumber
http://<Network IP emulator connects to>:<port where API is served>/api/tasks
Bagi kami itu karena kami mengunggah file dan filePicker RN tidak memberikan tipe mime yang tepat. Itu hanya memberi kami 'gambar' sebagai tipenya. Kami perlu mengubahnya ke 'gambar / jpg' untuk membuat pengambilan berfungsi.
sumber
Bereaksi Dokumen Asli memberikan jawaban untuk ini.
Bereaksi Dokumen Asli -> Integrasi Dengan Aplikasi yang Ada -> Uji integrasi Anda -> Tambahkan pengecualian Keamanan Transport Aplikasi
sumber
Masalahnya mungkin dalam konfigurasi server.
Android 7.0 memiliki bug yang dijelaskan di sini . Solusi yang diusulkan oleh Vicky Chijwani:
sumber
Saya mendapat masalah yang sama di Android tetapi saya berhasil menemukan solusi untuk itu. Android memblokir lalu lintas cleartext (non-https-request) sejak API Level 28 secara default. Namun, react-asli menambahkan konfigurasi keamanan jaringan ke versi debug (
android/app/src/debug/res/xml/react_native_config.xml
) yang mendefinisikan beberapa domain (localhost, dan IP host untuk AVD / Genymotion), yang dapat digunakan tanpa SSL dalam mode dev. Anda dapat menambahkan domain Anda di sana untuk memungkinkan permintaan http.sumber
Saya mendapat masalah yang sama di Android 9 karena "http" dan masalah diselesaikan dengan hanya menambahkan android: usingCleartextTraffic = "true" di AndroidManifest.xml
sumber
Saya menemukan masalah yang sama pada Android Emulator, di mana saya mencoba mengakses URL HTTPS eksternal dengan sertifikat yang valid. Tetapi gagal mengambil URL itu dalam bahasa asli
1) Untuk mengetahui kesalahan yang sebenarnya dalam log, saya pertama kali mengaktifkan 'Debug JS Remotely' menggunakan Cmd + M pada aplikasi
2) Kesalahan yang dilaporkan adalah
3) Saya menambahkan sertifikat URL yang valid menggunakan metode ini -> LANGKAH 2
Sertifikat ini ditambahkan ke tab Pengguna.
4) Tambahkan atribut
android:networkSecurityConfig
atribut ke AndroidManifest.xmlTambahkan file Konfigurasi Keamanan Jaringan
res/xml/network_security_config.xml:
Ini seharusnya bekerja dan memberi Anda respons yang diharapkan.
sumber
Saya mengalami masalah ini untuk Android-
URL- localhost / authToken.json - tidak berfungsi :(
URL- 10.106.105.103/authToken.json - tidak berfungsi :(
URL- http://10.106.105.103/authToken.json - berfungsi :): D
Catatan - Gunakan
ifconfig
di Linux atauipconfig
di Windows untuk menemukan mesin IpAddresssumber
Untuk pengguna Android:
Ganti
localhost
s ke alamat IP Lan karena ketika Anda menjalankan proyek pada perangkat Android, localhost menunjuk ke perangkat Android, alih-alih komputer Anda, contoh: ubahhttp://localost
kehttp://192.168.1.123
sumber
Untuk Android, Anda mungkin telah melewatkan untuk menambahkan izin di AndroidManifest.xml Perlu menambahkan izin berikut.
sumber
Saya punya masalah serupa. Dalam kasus saya, permintaan ke localhost berfungsi dan tiba-tiba berhenti. Ternyata masalahnya adalah saya mematikan wifi di ponsel android saya.
sumber
Ini bekerja untuk saya, android menggunakan tipe khusus dari alamat IP 10.0.2.2 kemudian nomor port
sumber
jika Anda menggunakan buruh pelabuhan untuk api REST, kasus yang bekerja bagi saya adalah untuk mengganti hostname:
http://demo.test/api
dengan mesin alamat ip:http://x.x.x.x/api
. Anda bisa mendapatkan IP dari memeriksa IPv4 apa yang Anda miliki di jaringan nirkabel Anda. Anda juga harus mengaktifkan wifi dari ponsel.sumber
Anda harus menangani kasus kesalahan di. Kemudian untuk mengambil API.
Sebagai contoh:
sumber
Tambahkan
android:usesCleartextTraffic="true"
baris di AndroidManifest.xml.Hapus semua folder debug dari folder android Anda.
sumber
Anda dapat mengatasinya menggunakan ini:
sumber
Hanya Anda memiliki Perubahan pada Ambil ....
sumber
Untuk perangkat Android, buka folder root proyek Anda dan jalankan perintah:
misalnya,
adb reverse tcp:8088 tcp:8088
Ini akan membuat perangkat fisik Anda (yaitu ponsel Android) mendengarkan server localhost yang berjalan pada mesin pengembangan Anda (yaitu komputer Anda) di alamat http: // localhost: [your_own_server_port] .
Setelah itu, Anda dapat langsung menggunakan panggilan
http:localhost:[your_port] /your_api
asli-reaksi Andafetch(
).sumber
Untuk android, tambahkan android: networkSecurityConfig = "@ xml / network_security_config" ke tag aplikasi di AndroidManifest.xml, seperti ini:
konten file network_security_config.xml:
sumber
Contoh:
sumber