Saya memiliki aplikasi yang berfungsi dengan baik pada Xcode6-Beta1 dan Xcode6-Beta2 dengan iOS7 dan iOS8. Tetapi dengan Xcode6-Beta3, Beta4, Beta5 saya menghadapi masalah jaringan dengan iOS8 tetapi semuanya bekerja dengan baik di iOS7. Saya mendapatkan kesalahan "The network connection was lost."
. Kesalahannya adalah sebagai berikut:
Kesalahan: Kesalahan Domain = NSURLErrorDomain Code = -1005 "Koneksi jaringan terputus." UserInfo = 0x7ba8e5b0 {NSErrorFailingURLStringKey =, _kCFStreamErrorCodeKey = 57, NSErrorFailingURLKey =, NSLocalizedDescription = Sambungan jaringan terputus., _KCFStreamErrorDomainKey = 1, jaringan sudah hilang 07957)
Saya menggunakan AFNetworking 2.x dan snipet kode berikut untuk melakukan panggilan jaringan:
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[manager setSecurityPolicy:policy];
manager.requestSerializer = [AFHTTPRequestSerializer serializer];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
[manager POST:<example-url>
parameters:<parameteres>
success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@“Success: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", error);
}];
Saya mencoba NSURLSession
tetapi masih menerima kesalahan yang sama.
sumber
Jawaban:
Restart simulator memperbaiki masalah untuk saya.
sumber
Kami memiliki kesalahan yang tepat ini dan ternyata menjadi masalah dengan implementasi HTTP yang mendasari
NSURLRequest
:Sejauh yang kami tahu, ketika iOS 8/9/10/11 menerima respons HTTP dengan sebuah
Keep-Alive
header, itu membuat koneksi ini untuk digunakan kembali nanti (sebagaimana mestinya), tetapi ia menyimpannya untuk lebih daritimeout
parameter dari Header Keep-Alive (sepertinya selalu menjaga koneksi tetap hidup selama 30 detik.) Kemudian ketika permintaan kedua dikirim oleh aplikasi kurang dari 30 detik kemudian, ia mencoba untuk menggunakan kembali koneksi yang mungkin telah dijatuhkan oleh server (Jika lebih dari yang sebenarnyaKeep-Alive
telah berlalu).Berikut adalah solusi yang kami temukan sejauh ini:
KeepAliveTimeout
opsi.BrowserMatch "iOS 8\." nokeepalive
dalam file modsetenvif.conf
)Connection: close
tajuk: ini akan memberi tahu server untuk segera menjatuhkan koneksi dan merespons tanpa tajuk header tetap hidup. TETAPI saat ini, NSURLSession tampaknya menimpaConnection
header ketika permintaan dikirim (kami tidak menguji solusi ini secara ekstensif karena kami dapat mengubah konfigurasi Apache)sumber
NSURLErrorNetworkConnectionLost
konstanta alih-alih hard-coding-1005
.Untuk saya,
Resetting content and settings
karya Simulator. Untuk mengatur ulang simulator, ikuti langkah-langkahnya:sumber
IOS 8,0 runtime simulator memiliki bug di mana jika konfigurasi jaringan Anda berubah saat perangkat yang disimulasikan di-boot, API tingkat yang lebih tinggi (misalnya: CFNetwork) dalam runtime yang disimulasikan akan berpikir bahwa ia telah kehilangan konektivitas jaringan. Saat ini, solusi yang disarankan adalah cukup reboot perangkat yang disimulasikan ketika konfigurasi jaringan Anda berubah.
Jika Anda terkena dampak dari masalah ini, silakan ajukan radar duplikat tambahan di http://bugreport.apple.com untuk mendapatkan peningkatan prioritas.
Jika Anda melihat masalah ini tanpa mengubah konfigurasi jaringan, maka itu bukan bug yang dikenal, dan Anda harus mengajukan radar, yang menunjukkan bahwa masalahnya bukanlah bug yang diubah konfigurasi-jaringan.
sumber
yang memecahkan masalah bagi saya adalah me-restart simulator, dan mengatur ulang konten dan pengaturan.
sumber
Juga memiliki masalah dengan beta 5 dan AFNetworking 1.3 saat berjalan pada simulator iOS 8 yang menghasilkan kesalahan koneksi:
Kode yang sama berfungsi dengan baik pada simulator iOS 7 dan 7.1 dan proksi debugging saya menunjukkan bahwa kegagalan terjadi sebelum suatu koneksi benar-benar dicoba (yaitu tidak ada permintaan dicatat).
Saya telah melacak kegagalan NSURLConnection dan melaporkan bug ke Apple. Lihat baris 5 pada gambar terlampir:
.
Mengubah penggunaan
https
memungkinkan koneksi dari simulator iOS 8 meskipun dengan kesalahan intermiten.Masalah masih ada di Xcode 6.01 (gm).
sumber
Saya mengalami masalah ini saat menggunakan Alamofire. Kesalahan saya adalah saya mengirim kamus kosong
[:]
untuk parameter berdasarkanGET
permintaan, bukan mengirimnil
parameter.Semoga ini membantu!
sumber
Pembukaan Charles menyelesaikan masalah bagi saya, yang tampaknya sangat aneh ...
sumber
Lihat komentar pjeb pada 5 Januari di Github.
Metode1:
Juga beberapa menyarankan untuk terhubung kembali ke situs,
yaitu Menembak permintaan POST DUA KALI
Solusi: Gunakan metode untuk melakukan koneksi ke situs, kembali (id), jika koneksi jaringan terputus, kembali untuk menggunakan metode yang sama.
Metode 2
sumber
Saya mendapatkan kesalahan ini juga, tetapi pada perangkat yang sebenarnya daripada simulator. Kami melihat kesalahan ketika mengakses backend heroku kami di HTTPS (server gunicorn), dan melakukan POSTS dengan bodys besar (lebih dari 64Kb). Kami menggunakan HTTP Basic Auth untuk otentikasi, dan menyadari bahwa kesalahan telah diatasi dengan TIDAK menggunakan
didReceiveChallenge:
metode delegasi di NSURLSession, melainkan memanggang Otentikasi ke dalam header permintaan asli melalui penambahanAuthentiation: Basic <Base64Encoded UserName:Password>
. Ini mencegah 401 yang diperlukan untuk memicudidReceiveChallenge:
pesan delegasi, dan koneksi jaringan berikutnya terputus.sumber
Saya memiliki masalah yang sama. Solusinya sederhana, saya sudah mengatur
HTTPBody
, tetapi belum diaturHTTPMethod
kePOST
. Setelah memperbaiki ini, semuanya baik-baik saja.sumber
Saya memiliki masalah yang sama. Saya tidak tahu bagaimana AFNetworking mengimplementasikan permintaan https, tetapi alasan saya adalah masalah cache NSURLSession.
Setelah aplikasi saya melacak kembali dari safari dan kemudian mengirim permintaan http, kesalahan "http gagal 1005" akan muncul. Jika saya berhenti menggunakan
"[NSURLSession sharedSession]"
, tetapi untuk menggunakan contoh NSURLSession yang dapat dikonfigurasi untuk memanggil metode "dataTaskWithRequest:" sebagai berikut, masalahnya terpecahkan.Hanya ingat untuk mengatur
config.URLCache = nil;
.sumber
Saya harus keluar dari XCode, menghapus isi folder DerivedData (~ / Library / Developer / Xcode / DerivedData atau / Library / Developer / Xcode / DerivedData) dan keluar dari simulator untuk membuat pekerjaan ini.
sumber
Saya memiliki masalah ini juga, berjalan pada perangkat iOS 8. Ini lebih rinci di sini dan tampaknya merupakan kasus iOS yang mencoba menggunakan koneksi yang sudah kehabisan waktu. Masalah saya tidak sama dengan masalah Keep-Alive yang dijelaskan di tautan itu, namun tampaknya merupakan hasil akhir yang sama.
Saya telah memperbaiki masalah saya dengan menjalankan blok rekursif setiap kali saya menerima kesalahan -1005 dan ini membuat koneksi akhirnya bisa melewati meskipun kadang-kadang rekursi dapat berulang selama 100 kali sebelum koneksi bekerja, namun itu hanya menambah detik berjalan. kali dan saya yakin itu hanya waktu yang dibutuhkan debugger untuk mencetak NSLog untuk saya.
Inilah cara saya menjalankan blok rekursif dengan AFNetworking: Tambahkan kode ini ke file kelas koneksi Anda
Kemudian gunakan suka ini:
Anda akan melihat bahwa saya menggunakan
AFHTTPRequestOperation
subkelas tetapi menambahkan kode permintaan Anda sendiri. Bagian yang penting adalah panggilanrecurse(@offset.intValue+1));
untuk membuat blok dipanggil lagi.sumber
Jika masalah terjadi pada perangkat, periksa apakah lalu lintas melalui proxy (Pengaturan> Wi-Fi> (info)> HTTP Proxy). Saya memiliki pengaturan perangkat untuk digunakan dengan Charles, tetapi lupa tentang proksi. Tampaknya tanpa Charles sebenarnya menjalankan kesalahan ini terjadi.
sumber
Jika ada yang mendapatkan kesalahan ini saat mengunggah file ke server backend, pastikan server penerima memiliki ukuran konten maksimum yang diperbolehkan untuk media Anda. Dalam kasus saya, NGINX membutuhkan yang lebih tinggi
client_max_body_size
. NGINX akan menolak permintaan sebelum pengunggahan selesai sehingga tidak ada kode kesalahan yang kembali.sumber
Saya mendapatkan kesalahan pada perangkat iOS 7 ketika saya menggunakan Xcode 6.2 beta.
Beralih kembali dari Xcode 6.2 beta ke 6.1.1 memperbaiki masalah, setidaknya pada perangkat iOS 7.
sumber
Di
2017-01-25
Apple merilis tanya jawab teknis tentang kesalahan ini:sumber
Mendapat masalah selama berbulan-bulan, dan akhirnya menemukan bahwa ketika kami menonaktifkan DNSSEC pada domain api kami, semuanya baik-baik saja: simple_smile:
sumber
Saya terhubung melalui VPN. Menonaktifkan VPN memecahkan masalah.
sumber
Saya memukul kesalahan ini ketika melewati NSURLRequest ke NSURLSession tanpa menetapkan HTTPMethod permintaan .
Tambahkan
HTTPMethod
, dan koneksi berfungsi dengan baiksumber
Uji apakah Anda dapat meminta dari aplikasi lain (seperti safari). Jika tidak mungkin ada sesuatu di komputer Anda. Dalam kasus saya, saya memiliki masalah dengan Avast Antivirus, yang memblokir permintaan simulator saya (jangan tanya kenapa).
sumber
Restart komputer memperbaiki masalah saya dengan Xcode9.1. Saya telah memulai ulang simulator dan Xcode, itu tidak berfungsi.
sumber
Saya menghadapi masalah yang sama, saya telah mengaktifkan Network Link Conditioner untuk pengujian jaringan lambat untuk aplikasi. Itu membuat kesalahan ini beberapa kali, Ketika saya menonaktifkannya
Settings > Developer > Network Link Conditioner
, itu memecahkan masalah saya.Semoga ini bisa membantu seseorang.
sumber
Di atas semua jawaban saya menemukan satu solusi yang bagus. Sebenarnya masalah yang terkait dengan koneksi jaringan gagal untuk iOS 12 kata adalah karena ada bug di iOS 12.0 kata. Dan itu belum diselesaikan. Saya telah mengunjungi komunitas git hub untuk masalah terkait AFNetworking ketika aplikasi datang dari latar belakang dan mencoba melakukan panggilan jaringan dan gagal saat koneksi tersambung. Saya menghabiskan 3 hari untuk ini dan mencoba banyak hal untuk sampai ke akar penyebabnya dan tidak menemukan apa pun. Akhirnya saya mendapat cahaya ketika saya merah blog ini https://github.com/AFNetworking/AFNetworking/issues/4279
Dikatakan bahwa ada bug di iOS 12. Pada dasarnya Anda tidak dapat mengharapkan panggilan jaringan untuk menyelesaikan jika aplikasi os tidak di latar depan. Dan karena bug ini panggilan jaringan turun dan kami mendapatkan jaringan gagal dalam log.
Saran terbaik saya untuk Anda adalah memberikan penundaan ketika aplikasi Anda datang dari latar belakang ke latar depan dan ada panggilan jaringan. Lakukan panggilan jaringan dalam pengiriman async dengan penundaan. Anda tidak akan pernah mendapatkan panggilan jaringan atau kehilangan koneksi.
Jangan menunggu Apple untuk membiarkan masalah ini menyelesaikan untuk iOS 12 karena masih belum diperbaiki. Anda dapat menyelesaikannya dengan memberikan beberapa penundaan untuk permintaan jaringan Anda menjadi NSURLConnection, NSURLSession atau AFNetworking, atau ALAMOFIRE. Bersulang :)
sumber
Dalam kasus saya itu karena saya terhubung ke HTTP dan itu berjalan pada HTTPS
sumber
Saya mengalami masalah ini karena alasan berikut.
TLDR: Periksa apakah Anda mengirim
GET
permintaan yang seharusnya mengirimkan parameter pada url alih-alih padaNSURLRequest's HTTBody
properti.==================================================
Saya telah memasang abstraksi jaringan pada aplikasi saya, dan itu berfungsi cukup baik untuk semua permintaan saya.
Saya menambahkan permintaan baru ke layanan web lain (bukan milik saya) dan itu mulai membuat saya kesalahan ini.
Saya pergi ke taman bermain dan mulai dari bawah ke atas membangun permintaan barebones, dan itu berhasil. Jadi saya mulai bergerak lebih dekat ke abstraksi saya sampai saya menemukan penyebabnya.
Implementasi abstraksi saya memiliki bug: Saya mengirim permintaan yang seharusnya mengirim parameter yang dikodekan dalam url dan saya juga mengisi
NSURLRequest's HTTBody
properti dengan parameter kueri juga. Segera setelah saya menghapusHTTPBody
itu berhasil.sumber
Saya menerima kesalahan ini dan juga memperhatikan bahwa aplikasi Postman juga jatuh tetapi bekerja di aplikasi Advanced Rest Client (ARC) dan bekerja di Android. Jadi saya harus menginstal Charles untuk men-debug komunikasi dan saya perhatikan bahwa kode respons -1. Masalahnya adalah bahwa programmer REST lupa mengembalikan kode respons 200.
Saya harap ini membantu pengembang lain.
sumber
Setiap kali mendapat kesalahan -1005 maka perlu memanggil API lagi.
Anda perlu menambahkan kode Anda untuk memanggil fungsi lagi. Pastikan Anda pernah menggunakan metode panggilan jika tidak, ini adalah panggilan rekursif.
sumber
Saya menghadapi masalah yang sama saat menelepon menggunakan server perusahaan saya dari aplikasi iOS 12 dengan perangkat fisik. Masalahnya adalah bahwa hard disk server penuh. Mengosongkan ruang di server memecahkan masalah.
Saya menemukan kesalahan yang sama dalam situasi lain yang saya pikir karena batas waktu tidak dapat dipastikan melalui API Jaringan standar yang disediakan oleh Apple (
URLSession.timeoutIntervalForRequest
danURLSession.timeoutIntervalForResource
). Bahkan ada .. membuat jawaban server lebih cepat menyelesaikan masalahsumber