Domain Kesalahan = NSURLErrorDomain Code = -1005 “Koneksi jaringan terputus.”


268

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 NSURLSessiontetapi masih menerima kesalahan yang sama.


Perubahan apapun ? Ini hanya terjadi pada iOS 8 pada Wifi untuk saya, masih berusaha mencari solusinya.
Dimillian


Adakah yang bisa membantu saya untuk memecahkan masalah saya, masalah yang hampir sama tetapi kode kesalahan yang berbeda, stackoverflow.com/questions/26972822/…
iYoung

1
menghadapi masalah yang sama dengan iOS 10.0.1 dan Xcode 8.
Satheeshwaran

1
Saya mendapatkan kesalahan ini pagi ini dan memperbaikinya sekarang dengan solusi yang sederhana dan aneh. Alamat server yang diminta salah, tidak ada kode status 4xx atau 5xx yang dikembalikan, hanya mengalami masalah ini, tidak yakin apa sebenarnya penyebab rootnya. Jadi, harap konfirmasi dengan pengembang backend di tim Anda, atau Anda akan menghabiskan beberapa jam untuk itu.
Itachi

Jawaban:


413

Restart simulator memperbaiki masalah untuk saya.


3
Apa yang terjadi jika masalah ini ada pada perangkat, bukan sim? Mencoba me-restart perangkat, kesalahan masih sama.
Sean Clark

2
@SeanClark: lihat jawaban berikut: me-reboot simulator berfungsi karena OS perlu memutuskan koneksi yang mati alih-alih mencoba menggunakannya kembali setelah mereka dijatuhkan oleh server. Untuk mengatasi masalah ini, Anda dapat menonaktifkan mekanisme Keep-hidup di server untuk klien iOS, atau, jika Anda tidak memiliki akses ke server, Anda dapat mencoba lagi permintaan yang sama ketika gagal (kegagalan seharusnya membuat OS menjatuhkan koneksi dan yang baru dipakai saat mencoba lagi dikirim).
Arthur

Saat ini saya menggunakan Xcode 6.2 dan apa yang menyelesaikannya adalah mengklik iOS Simulator> Reset Pengaturan dan Konten. Setelah itu selesai saya keluar dari simulator dan membangun kembali dan menjalankan proyek saya ... semuanya bekerja dengan baik setelahnya.
KingPolygon

Ini berhasil bagi saya untuk mereset simulator tetapi hanya 10% dari waktu. Saya baru saja mendapat ISP baru dan itu berjalan agak aneh. Ini terjadi sepanjang waktu sekarang di simulator. Bisa jadi jaringan.
noobsmcgoobs

1
Menyetel ulang simulator tidak berfungsi untuk saya. Namun mulai Charles membuat masalah menghilang. Lihat stackoverflow.com/a/26066764/598057 yang menyarankan penggunaan Charles. Sangat aneh tapi berhasil ...
Stanislav Pankevich

231

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-Aliveheader, itu membuat koneksi ini untuk digunakan kembali nanti (sebagaimana mestinya), tetapi ia menyimpannya untuk lebih dari timeoutparameter 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 sebenarnya Keep-Alivetelah berlalu).

Berikut adalah solusi yang kami temukan sejauh ini:

  • Tambah parameter batas waktu server di atas 30 detik. Sepertinya iOS selalu berperilaku seolah-olah server akan menjaga koneksi tetap terbuka selama 30 detik terlepas dari nilai yang disediakan di header Keep-Alive. (Ini dapat dilakukan untuk Apache dengan mengatur KeepAliveTimeoutopsi.
  • Anda cukup menonaktifkan mekanisme keep live untuk klien iOS berdasarkan Agen-Pengguna aplikasi Anda (mis. Untuk Apache: BrowserMatch "iOS 8\." nokeepalivedalam file mod setenvif.conf)
  • Jika Anda tidak memiliki akses ke server, Anda dapat mencoba mengirim permintaan Anda dengan Connection: closetajuk: ini akan memberi tahu server untuk segera menjatuhkan koneksi dan merespons tanpa tajuk header tetap hidup. TETAPI saat ini, NSURLSession tampaknya menimpa Connectionheader ketika permintaan dikirim (kami tidak menguji solusi ini secara ekstensif karena kami dapat mengubah konfigurasi Apache)

7
Berikut adalah proyek contoh yang menunjukkan masalah ini, laporan bug juga telah dikirimkan ke Apple. cl.ly/Xgkl/keep-alive-fail.zip Luncurkan proyek, klik tombol posting pertama (atas pada layar), tunggu 5 detik, klik lagi, kesalahan.
Dimillian

5
Tetap hidup adalah bilateral. Klien akan menambahkan header http "Connection: Keep-Alive" secara default, menambahkan parameter keep-live pada permintaan klien dapat membantu; mis. Keep-Alive: maks = 1 ". Komentar Arthur sangat membantu tetapi juga menunjukkan lebih dari 1 masalah di jaringan simulator iOS8. Saya harus menggunakan https untuk mendapatkan koneksi karena http gagal sebelum mengirim permintaan.
ptc

5
Hai teman-teman, saya mengalami masalah yang sama persis pada perangkat ini. Apakah ada perbaikan untuk ini? Tidak ada masalah di iOS 7.
Andres C

9
Kiat: Anda dapat menggunakan NSURLErrorNetworkConnectionLostkonstanta alih-alih hard-coding -1005.
Vincent Tourraine

6
Masalah ini masih ada di iOS 11.2.6.
Makalele

47

Untuk saya, Resetting content and settingskarya Simulator. Untuk mengatur ulang simulator, ikuti langkah-langkahnya:

iOS Simulator -> Reset Konten dan Pengaturan -> Tekan Reset (pada peringatan yang akan datang)


29

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.


7
Saya memiliki masalah ini pada perangkat juga.
Darren

@ Darren Maka itu bukan masalah yang saya maksud. Saya sarankan Anda mengajukan radar.
Jeremy Huddleston Sequoia

4
harap sertakan ID radar Anda sehingga membuat duplikat pengarsipan lebih mudah
Daniel Galasko

11

yang memecahkan masalah bagi saya adalah me-restart simulator, dan mengatur ulang konten dan pengaturan.


Ini juga membantu untuk mematikan aplikasi sebelum reset simulator dan untuk me-restart Mac. Saya sering berganti tempat dengan tempat wifi yang berbeda dan ini adalah prosedur yang memperbaiki masalah bagi saya.
Vladimír Slavík

11

Juga memiliki masalah dengan beta 5 dan AFNetworking 1.3 saat berjalan pada simulator iOS 8 yang menghasilkan kesalahan koneksi:

Domain = NSURLErrorDomain Code = -1005 "Koneksi jaringan terputus."

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:

Delegasi klien NSURLConnection melakukan kesalahan gagal.

Mengubah penggunaan httpsmemungkinkan koneksi dari simulator iOS 8 meskipun dengan kesalahan intermiten.

Masalah masih ada di Xcode 6.01 (gm).


Saya melihat masalah yang sama dengan NSURLSession dan NSURLConnection, itu mengesampingkan masalah dengan AFNetworking. Saya juga menemukan ini berfungsi dengan https dan gagal dengan http. Saya masih tidak dapat menemukan solusi, apakah Anda mendapatkan resolusi?
VoidStack

Tidak ada resolusi yang dilaporkan sebagai bug (18072300) akan menambahkan komentar tentang https berfungsi yang merupakan informasi yang baik.
ptc

bisakah Anda menempelkan tautan bug di sini? Terima kasih karena saya pikir saya memiliki masalah yang sama tetapi saya hanya menggunakan NSURLConnection (dan delegasi) tapi saya mendapatkan pesan kesalahan yang sama
szuniverse

Tidak dapat membagikan laporan bug Apple. Masih terbuka dan masih ada dalam XCODE 6 beta 7. Jika Anda juga melaporkan laporan bug, itu akan membantu dengan prioritas.
ptc

Sepertinya masalah ini ada di simulator iOS dan saya lelah dengan perangkat yang sebenarnya berfungsi dengan baik. Lebih lanjut debugging Saya menemukan masalah adalah tentang port pada iOS simulator, https port 443 berfungsi dengan baik dan saya menggunakan 8080 untuk http dulu gagal. Saya mencoba menggunakan port lain dan dapat membuat panggilan http di simulator iOS. Sepertinya bug dalam beta Xcode 6, perlu menunggu stabil Xcode 6.
VoidStack

10

Saya mengalami masalah ini saat menggunakan Alamofire. Kesalahan saya adalah saya mengirim kamus kosong [:]untuk parameter berdasarkan GETpermintaan, bukan mengirim nilparameter.

Semoga ini membantu!


DAPATKAN dan POST dengan kamus tubuh kosong [:] akan menyebabkan kesalahan ini secara acak. Saya menggunakan Python Flask untuk backend REST APIs ini mungkin berguna juga.
Mahmoud Fayez

10

Pembukaan Charles menyelesaikan masalah bagi saya, yang tampaknya sangat aneh ...

Charles adalah proxy HTTP / monitor HTTP / Reverse Proxy yang memungkinkan pengembang melihat semua lalu lintas HTTP dan SSL / HTTPS antara mesin mereka dan Internet. Ini termasuk permintaan, tanggapan, dan header HTTP (yang berisi cookie dan informasi caching).


1
Ini juga berfungsi untuk saya, saya pikir karena charles menggunakan sertifikat ssl untuk mem-proxy permintaan sumulator, ia melakukan trik yang mirip dengan menggunakan https
thisispete

1
Ini bekerja untuk saya setiap saat! Telah mencobanya 30 kali dan berhasil 30 dari 30. Saya pikir itu kebetulan, tapi bagus untuk mengetahui itu bukan saya.
jdog

2
Charles adalah alat proxy yang memungkinkan Anda menonton lalu lintas dari mesin Anda. Periksa charlesproxy.com untuk detailnya. Sertifikat Charles SSL dapat mengacaukan kemampuan simulator untuk membuat permintaan jaringan.
Colin Tremblay

@ColinTremblay Saya pikir simulator / perangkat Anda dikonfigurasi untuk menggunakan proxy. Menghapus proxy juga akan berfungsi.
bikram990

Konyolnya, ini juga berhasil bagi saya. Diperlukan agar Charles membuka lalu setel ulang pengaturan iOS Simulator.
Matt Andrews

6

Lihat komentar pjeb pada 5 Januari di Github.

Metode1:

if (error.code == -1005)
{
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{

        dispatch_group_t downloadGroup = dispatch_group_create();
        dispatch_group_enter(downloadGroup);
        dispatch_group_wait(downloadGroup, dispatch_time(DISPATCH_TIME_NOW, 5000000000)); // Wait 5 seconds before trying again.
        dispatch_group_leave(downloadGroup);
        dispatch_async(dispatch_get_main_queue(), ^{
            //Main Queue stuff here
            [self redoRequest]; //Redo the function that made the Request.
        });
    });

    return;
}

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

-(id) connectionSitePost:(NSString *) postSender Url:(NSString *) URL {
     // here set NSMutableURLRequest =>  Request

    NSHTTPURLResponse *UrlResponse = nil;
    NSData *ResponseData = [[NSData alloc] init];

    ResponseData = [NSURLConnection sendSynchronousRequest:Request returningResponse:&UrlResponse error:&ErrorReturn];

     if ([UrlResponse statusCode] != 200) {

          if ([UrlResponse statusCode] == 0) {

                  /**** here re-use method ****/
                  return [self connectionSitePost: postSender Url: URL];
          }

     } else {
          return ResponseData;
     }

}

Metode 1 sangat membantu saya .. Terima kasih
Abhishek Mitra

4

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 penambahan Authentiation: Basic <Base64Encoded UserName:Password>. Ini mencegah 401 yang diperlukan untuk memicu didReceiveChallenge:pesan delegasi, dan koneksi jaringan berikutnya terputus.


Terima kasih banyak atas komentar Anda yang berharga. Anda benar jika saya mengunggah di bawah string base64 gambar 64 kb itu akan berhasil diunggah.
Vinayak Bhor

3

Saya memiliki masalah yang sama. Solusinya sederhana, saya sudah mengatur HTTPBody, tetapi belum diatur HTTPMethodke POST. Setelah memperbaiki ini, semuanya baik-baik saja.


3

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.

NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration];
config.requestCachePolicy = NSURLRequestReloadIgnoringLocalCacheData;
config.URLCache = nil;
self.session = [NSURLSession sessionWithConfiguration:config];

Hanya ingat untuk mengatur config.URLCache = nil;.


1
Saya pikir semua yang me-restart perangkat / simulator atau mengatur ulang data harus melihat jawaban ini. Bagi saya semua tindakan mereka tampaknya membersihkan cache yang sebenarnya memperbaiki masalah. Jadi itu mungkin masalah Cache URL. Saya akan mengujinya sekarang.
Kamran Khan

2

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.


1
Satu-satunya tindakan yang relevan dalam daftar itu adalah me-restart simulator. Memulai ulang Xcode dan menghapus Data yang diperoleh berlebihan.
Jeremy Huddleston Sequoia

2

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

// From Mike Ash's recursive block fixed-point-combinator strategy https://gist.github.com/1254684
dispatch_block_t recursiveBlockVehicle(void (^block)(dispatch_block_t recurse))
{
    // assuming ARC, so no explicit copy
    return ^{ block(recursiveBlockVehicle(block)); };
}
typedef void (^OneParameterBlock)(id parameter);
OneParameterBlock recursiveOneParameterBlockVehicle(void (^block)(OneParameterBlock recurse, id parameter))
{
    return ^(id parameter){ block(recursiveOneParameterBlockVehicle(block), parameter); };
}

Kemudian gunakan suka ini:

+ (void)runOperationWithURLPath:(NSString *)urlPath
            andStringDataToSend:(NSString *)stringData
                    withTimeOut:(NSString *)timeOut
     completionBlockWithSuccess:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success
                        failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure
{
    OneParameterBlock run = recursiveOneParameterBlockVehicle(^(OneParameterBlock recurse, id parameter) {
        // Put the request operation here that you want to keep trying
        NSNumber *offset = parameter;
        NSLog(@"--------------- Attempt number: %@ ---------------", offset);

        MyAFHTTPRequestOperation *operation =
            [[MyAFHTTPRequestOperation alloc] initWithURLPath:urlPath
            andStringDataToSend:stringData
            withTimeOut:timeOut];

        [operation setCompletionBlockWithSuccess:
            ^(AFHTTPRequestOperation *operation, id responseObject) {
                success(operation, responseObject);
            }
            failure:^(AFHTTPRequestOperation *operation2, NSError *error) {
                if (error.code == -1005) {
                    if (offset.intValue >= numberOfRetryAttempts) {
                        // Tried too many times, so fail
                        NSLog(@"Error during connection: %@",error.description);
                        failure(operation2, error);
                    } else {
                        // Failed because of an iOS bug using timed out connections, so try again
                        recurse(@(offset.intValue+1));
                    }
                } else {
                    NSLog(@"Error during connection: %@",error.description);
                    failure(operation2, error);
                }
            }];
        [[NSOperationQueue mainQueue] addOperation:operation];
    });
    run(@0);
}

Anda akan melihat bahwa saya menggunakan AFHTTPRequestOperationsubkelas tetapi menambahkan kode permintaan Anda sendiri. Bagian yang penting adalah panggilan recurse(@offset.intValue+1));untuk membuat blok dipanggil lagi.


Apakah kelas MyAFHTTPRequestOperation?
jdog

Ini hanya subclass AFHTTPRequestOperation. Saya menggunakannya untuk menentukan beberapa hal seperti batas waktu dan otentikasi.
Darren

2

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.


2

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.


2

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.


Saya tidak berpikir ada sesuatu untuk dipecahkan: OS yang mendasari sambungan koneksi karena alasan yang sah atau tidak. Aplikasi harus siap untuk menghadapinya (bekerja offline atau apa pun). Mengasumsikan SDK dalam versi xcode khusus Anda tentu saja bukan buggy: seperti jawaban saya menyarankan 6.2 kemungkinan besar buggy sementara 6.1.1 baik. Sesuatu yang serupa dapat diamati sekarang ketika xcode 6.4 tampaknya cukup stabil sementara 7.0.1 adalah perangkat lunak tingkat alpha. Atau begitulah tampaknya.
Anton Tropashko

2

Di 2017-01-25Apple merilis tanya jawab teknis tentang kesalahan ini:

T&J Teknis Apple QA1941

Menangani "Sambungan jaringan terputus" Kesalahan

A: NSURLErrorNetworkConnectionLost adalah kesalahan -1005 di domain kesalahan NSURLErrorDomain, dan ditampilkan kepada pengguna sebagai "Koneksi jaringan terputus". Kesalahan ini berarti bahwa koneksi TCP yang mendasarinya yang membawa permintaan HTTP terputus saat permintaan HTTP sedang berlangsung (lihat di bawah untuk informasi lebih lanjut tentang ini). Dalam beberapa keadaan NSURLSession dapat mencoba kembali permintaan tersebut secara otomatis (khususnya, jika permintaan idempoten) tetapi dalam keadaan lain itu tidak diizinkan oleh standar HTTP.

https://developer.apple.com/library/archive/qa/qa1941/_index.html#//apple_ref/doc/uid/DTS40017602


1

Mendapat masalah selama berbulan-bulan, dan akhirnya menemukan bahwa ketika kami menonaktifkan DNSSEC pada domain api kami, semuanya baik-baik saja: simple_smile:


2
Bisakah Anda jelaskan?
Groot

1

Saya terhubung melalui VPN. Menonaktifkan VPN memecahkan masalah.


1

Saya memukul kesalahan ini ketika melewati NSURLRequest ke NSURLSession tanpa menetapkan HTTPMethod permintaan .

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:urlComponents.URL];

Domain Kesalahan = NSURLErrorDomain Code = -1005 "Koneksi jaringan terputus."

Tambahkan HTTPMethod, dan koneksi berfungsi dengan baik

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:urlComponents.URL];
[request setHTTPMethod:@"PUT"];

1

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).


1

Restart komputer memperbaiki masalah saya dengan Xcode9.1. Saya telah memulai ulang simulator dan Xcode, itu tidak berfungsi.


1

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.

masukkan deskripsi gambar di sini

Semoga ini bisa membantu seseorang.


1

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 :)


1

Dalam kasus saya itu karena saya terhubung ke HTTP dan itu berjalan pada HTTPS


0

Saya mengalami masalah ini karena alasan berikut.

TLDR: Periksa apakah Anda mengirim GETpermintaan yang seharusnya mengirimkan parameter pada url alih-alih pada NSURLRequest's HTTBodyproperti.

==================================================

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 HTTBodyproperti dengan parameter kueri juga. Segera setelah saya menghapus HTTPBodyitu berhasil.


0

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.


0

Setiap kali mendapat kesalahan -1005 maka perlu memanggil API lagi.

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);
      if (error.code == -1005) {
          // Call method again... 
       }
  }];

Anda perlu menambahkan kode Anda untuk memanggil fungsi lagi. Pastikan Anda pernah menggunakan metode panggilan jika tidak, ini adalah panggilan rekursif.


0

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.timeoutIntervalForRequestdan URLSession.timeoutIntervalForResource). Bahkan ada .. membuat jawaban server lebih cepat menyelesaikan masalah

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.