Saya mencoba AFNetworking versi 2.0 baru dan saya mendapatkan kesalahan di atas. Tahu mengapa hal ini terjadi? Ini kode saya:
NSURL *URL = [NSURL URLWithString:kJSONlink];
NSURLRequest *request = [NSURLRequest requestWithURL:URL];
AFHTTPRequestOperation *op = [[AFHTTPRequestOperation alloc] initWithRequest:request];
op.responseSerializer = [AFJSONResponseSerializer serializer];
[op setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"JSON: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", error);
}];
[[NSOperationQueue mainQueue] addOperation:op];
Saya menggunakan Xcode 5.0.
Juga, inilah pesan kesalahannya:
Error: Error Domain=AFNetworkingErrorDomain Code=-1016 "Request failed: unacceptable content-type: text/html" UserInfo=0xda2e670 {NSErrorFailingURLKey=kJSONlink, AFNetworkingOperationFailingURLResponseErrorKey=<NSHTTPURLResponse: 0xda35180> { URL: kJSONlink } { status code: 200, headers {
Connection = "Keep-Alive";
"Content-Encoding" = gzip;
"Content-Length" = 2898;
"Content-Type" = "text/html";
Date = "Tue, 01 Oct 2013 10:59:45 GMT";
"Keep-Alive" = "timeout=5, max=100";
Server = Apache;
Vary = "Accept-Encoding";
} }, NSLocalizedDescription=Request failed: unacceptable content-type: text/html}
Saya hanya menyembunyikan JSON menggunakan kJSONlink. Ini akan mengembalikan JSON.
ios
afnetworking
afnetworking-2
jaytrixz
sumber
sumber
op.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];
acceptableContentTypes
:)op.responseSerializer.acceptableContentTypes = [op.responseSerializer.acceptableContentTypes setByAddingObject:@"text/html"];
op.responseSerializer.acceptableContentTypes = NSSet(object: "text/html")
Mengatur
RequestOperationManager
Serializer Respons saya keHTTPResponseSerializer
memperbaiki masalah ini.Objektif-C
Cepat
Membuat perubahan ini berarti saya tidak perlu menambahkan
acceptableContentTypes
ke setiap permintaan yang saya buat.sumber
AFJSONResponseSerializer
responseSerializer
keAFJSONResponseSerializer
.Saya mengambil jawaban / komentar @ jaytrixz satu langkah lebih jauh dan menambahkan "teks / html" ke set tipe yang ada. Dengan begitu ketika mereka memperbaikinya di sisi server untuk "application / json" atau "text / json" saya mengklaim itu akan bekerja dengan lancar.
sumber
Di sisi server, saya menambahkan:
ke dalam kode .php saya dan ini juga memperbaiki masalahnya.
sumber
if(!headers_sent() ) { header('Content-Type: application/json'); }
Merupakan perbaikan yang bagusSaya memecahkan masalah ini dari perspektif yang berbeda.
Saya pikir jika server mengirim data JSON dengan
Content-Type: text/html
header. Itu tidak berarti server pria bermaksud mengirimi Anda beberapa html tetapi secara tidak sengaja berubah menjadi JSON. Itu berarti pria server tidak peduli tentang apaContent-Type
header itu. Jadi, jika orang server tidak peduli sebagai sisi klien Anda lebih baik mengabaikanContent-Type
header juga. Untuk mengabaikanContent-Type
check-in headerAFNetworking
Dengan cara ini
AFJSONResponseSerializer
(yang default) akan membuat serialisasi data JSON tanpa memeriksaContent-Type
header respons.sumber
Cara mudah untuk mengaktifkan menerima jenis konten "teks / polos":
Demikian pula jika Anda ingin mengaktifkan tipe konten "teks / html":
sumber
Saya mencoba di bawah baris sesuai jawaban @Andrie tetapi tidak berhasil,
jadi setelah berburu lebih banyak, saya berusaha untuk membuatnya bekerja dengan sukses.
Ini snip kode saya.
Semoga ini bisa membantu seseorang di luar sana.
sumber
Ini adalah satu-satunya hal yang saya temukan berhasil
sumber
Jika seseorang menggunakan
AFHTTPSessionManager
maka seseorang dapat melakukan ini untuk menyelesaikan masalah,Saya subclass di
AFHTTPSessionManager
mana saya melakukan seperti ini,sumber
Dalam kasus saya, saya tidak memiliki kontrol atas pengaturan server, tetapi saya tahu itu mengharapkan "application / json" untuk "Content-Type". Saya melakukan ini di sisi klien iOS:
lihat kesalahan tipe konten AFNetworking versi 2
sumber
Cukup tambahkan baris ini:
sumber
Saya punya masalah yang mirip dengan bekerja dengan AFNetworking dari basis kode Swift jadi saya hanya meninggalkan ini di sini dalam kasus jarak jauh seseorang sama sialnya dengan saya harus bekerja dalam pengaturan seperti itu. Jika ya, saya merasa Anda teman, tetaplah kuat!
Operasi gagal karena "tipe konten yang tidak dapat diterima", meskipun saya sebenarnya mengatur
acceptableContentTypes
dengan aSet
berisi nilai tipe konten yang dimaksud.Solusi bagi saya adalah men-tweak kode Swift agar lebih ramah Objective-C, saya kira :
sumber
Pertanyaan yang bagus selalu memiliki beberapa jawaban, untuk mengurangi dan membantu Anda memilih jawaban yang benar, di sini saya juga menambahkan jawaban saya sendiri. Saya telah mengujinya dan berfungsi dengan baik.
sumber
sumber