iOS開發 AFNetworking 3.0使用遇到的問題補充

來源:互聯網
上載者:User

iOS開發 AFNetworking 3.0使用遇到的問題補充
1.很多初學者,在每處用到網路請求的地方會直接拿afn執行個體去請求,從而帶來了後續難以維護代碼的問題

    [[AFHTTPSessionManager manager] POST:nil parameters:nil success:^(NSURLSessionDataTask *task, id responseObject) {    } failure:^(NSURLSessionDataTask *task, NSError *error) {    }];

思考:如果afn不更新了,後續出現重大bug適配問題,從而導致每處用到afn的地方都要修改,請問怎麼辦?
答案:呵呵,只能一個個修改了!有人會說,怎麼可能不更新,很多人用著呢,怕什麼。那假設其他第三方也同樣出現類型的問題呢?所以是不是應該有方法或某種思想去解決呢?

解決方案:寫個網路基類HRHttpBase,提供兩個方法:GET 與 POST,外面請求時,直接調用這兩個方法,萬一afn出了問題,只要修改這兩個方法即可,從而減輕後續維護成本!這種做法同樣適用於其他的第三方庫, 這也是一種開發思想。

HRHttpBase.h


  

HRHttpBase.m


  

假設業務複雜的話,如登入,涉及到第三方登入之類的,有比較多的網路請求,可以專門抽一個網路請求類要處理:

HRhttpLogin.h


  

HRhttpLogin.m


  2.用到CocoaPods,但更改了afn代碼問題
  

這是缺少text/html解析格式,請求網路時,只要添加上就行了,很多人在網上找到設定的地方(如)。但他忘了,項目用CocoaPods管理第三方庫的,如果項目上線之前,同事更新了CocoaPods那麼之前寫的代碼就沒了!


  

解決辦法:通過AFHTTPSessionManager執行個體找到AFHTTPResponseSerializer 對象,然後看有沒提供對應的方法或屬性可設定該格式。


  

像類似的網路請求headeruser-agent都應該在自己的代碼裡設定!

3.返回字串而並非是json或xml格式,怎麼解析?

開發中確實是存在奇葩的需求,還有可能返回一堆html格式的String,要截取Sting裡的某個key。對於處理不了的格式,afn有可能error回調。

用AFHTTPSessionManager,我沒找到未解析的字元(知道的朋友可以告訴我,謝謝)。最後還是用了AFHTTPRequestOperationManager

operation.responseString即為未格式化的字元


Paste_Image.png

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.