天天看點

iOS開發網絡篇—簡單介紹ASI架構的使用

說明:本文主要介紹網絡程式設計中常用架構asi的簡單使用。

一、asi簡單介紹

asi:全稱是asihttprequest,外号“http終結者”,功能十分強大。

asi的實作基于底層的cfnetwork架構,是以運作效率很高。可惜作者早已停止更新,有一些潛在的bug無人去解決

asi的github位址

<a href="https://github.com/pokeb/asi-http-request">https://github.com/pokeb/asi-http-request</a>

asi的使用參考

<a href="http://www.cnblogs.com/dotey/archive/2011/05/10/2041966.html">http://www.cnblogs.com/dotey/archive/2011/05/10/2041966.html</a>

<a href="http://www.oschina.net/question/54100_36184">http://www.oschina.net/question/54100_36184</a>

二、asi的使用

1導入

  下載下傳并導入asi架構,注意該架構依賴于reachability.

iOS開發網絡篇—簡單介紹ASI架構的使用

  導入架構後,如果編譯的話會出現一大堆的錯誤。其中一個最主要的原因是因為該架構是非arc的。

思考:如果一個架構,其中很多檔案都是非arc的,那麼應該如何進行設定?

  在這裡,介紹最傻瓜的一種方法,通過進行如下的一些設定以解決問題。(注意:對于所有的asi架構中得檔案都需要進行此番設定)

iOS開發網絡篇—簡單介紹ASI架構的使用

  設定完成後,還存在一些錯誤。産生這些錯誤的原因是asi架構它依賴于下面的幾個架構,把需要的架構添加後再編譯,就不會有問題了。

iOS開發網絡篇—簡單介紹ASI架構的使用

  添加依賴的架構:

iOS開發網絡篇—簡單介紹ASI架構的使用

把所需的三個架構逐個添加到項目中

iOS開發網絡篇—簡單介紹ASI架構的使用

2發送網絡請求(同步和異步*get和post請求)

示例程式代碼:

iOS開發網絡篇—簡單介紹ASI架構的使用
iOS開發網絡篇—簡單介紹ASI架構的使用

程式說明:

(1)同步發送請求列印的消息

iOS開發網絡篇—簡單介紹ASI架構的使用

(2)異步發送請求

asi以異步的方式發送網絡請求有三種方式,第一種是通過代理進行監聽;第二種方法是通過block進行監聽。還有一種方法時使用selector,這是建立在設定代理的基礎之上的,調用的方法會覆寫代理方法。

第一種方法:

iOS開發網絡篇—簡單介紹ASI架構的使用
iOS開發網絡篇—簡單介紹ASI架構的使用

第二種方法:

iOS開發網絡篇—簡單介紹ASI架構的使用
iOS開發網絡篇—簡單介紹ASI架構的使用

第三種方法:

iOS開發網絡篇—簡單介紹ASI架構的使用
iOS開發網絡篇—簡單介紹ASI架構的使用

提示:block是ios4之後才引入的技術。

這兩種方法各有優缺點

說明:如果要同時發送多個請求,他們都設定控制器為自己的代理,這樣需要進行一些必要的判斷。而如果各自都是有block這樣的方式的話,那麼将不會存在這些問題,多個請求之間互相不存在幹擾。

  新的問題:如果又有block又設定了代理,那麼情況是什麼樣子的呢?

  答案是block和相關的代理方法都會被調用。

(3)補充

提示:asi中已經考慮到了線程安全的問題。

iOS開發網絡篇—簡單介紹ASI架構的使用

3.發送post請求。

代碼:

iOS開發網絡篇—簡單介紹ASI架構的使用

注意需要包含一個頭檔案

iOS開發網絡篇—簡單介紹ASI架構的使用

内部預設就是post的。

iOS開發網絡篇—簡單介紹ASI架構的使用

注意add和set的差別,一個是添加(适用于多值參數),一個是覆寫(内部先remove,再add)。

iOS開發網絡篇—簡單介紹ASI架構的使用

伺服器接收到的請求資訊:

iOS開發網絡篇—簡單介紹ASI架構的使用

繼續閱讀