1. 程式人生 > >AFNetWorking 3.0 使用遇到的問題

AFNetWorking 3.0 使用遇到的問題

問題一

我是做一個獲取手機驗證碼的功能,進行一個網路請求,驗證碼也發給我了,後臺的也跟我說請求成功了,但是我這邊列印資訊顯示直接進入了錯誤的回撥。。。如下圖:


驗證碼獲取返回格式問題

報錯說是返回型別不一致,後來查明原因,是返回的格式問題(雖然後臺跟我說返回的json)需要新增上這麼一句話:

    //如果報接受型別不一致請替換一致text/html或別的
    manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];

此問題解決!


問題二

由於以前我用AFN,這次偷懶直接把以前的程式碼複製了一下,然後用的時候後臺跟我說穿不過去引數,我這邊確定引數什麼的都寫了,也沒寫錯,但是還是穿不過去引數。於是我查了一下程式碼,發現程式碼中有這兩句話:


宣告返回型別

宣告請求和返回的資料是json。問題就出在第一句話上,因為我這邊聲明瞭傳過去的引數是json格式,但是我寫的格式並不是json的,AFN就把我的引數過濾了,所以後臺那邊收到的我傳過去的引數就是NULL了。。(這是我自己的理解,有不對的地方希望大神能夠指正一下)
解決辦法我是吧兩個直接註釋了(因為我知道返回的是json,第二句加不加都一樣)。
在這裡,第一句加上是鐵定會錯的,第二句就無所謂了。。。


目前遇到的問題就這麼兩個,以後如果遇到的話再來新增。


PS:再補充一下,現在好多朋友還在用AFN2.0版本,它是基於NSURLConnection寫的,但是蘋果在Xcode7 中棄用了這個(雖然還可以使用),改用NSURLSession,而AFN3.0就是基於NSURLSession來做的,AFN3.0中刪除了 基於NSURLConnection的東西,如以前常用的AFURLConnectionOperation、AFHTTPRequestOperation、AFHTTPRequestOperationManager等,AFN 3.0版本現在正式支援的iOS 7, Mac OS X的10.9, watchOS 2 , tvOS 9 和Xcode 7,所以覺得還是用新的好,萬一徹底刪除了NSURLConnection,那豈不是全部要瞎了。。。

AFN 2.0升級到最新的版本API,可以看這篇文字專門過渡的。

有什麼問題希望大家能夠指出,謝謝大家!