1. 程式人生 > >簡單的封裝網路下載almofire(一)

簡單的封裝網路下載almofire(一)

     網路下載是作為一個iOS程式必須懂得的技術.雖然已經有大牛封裝非常好用的下載sdk,功能也非常強大,並且基本上你都不用怎麼在新增新的功能就可以直接使用.非常方便.
   但是有個問題,如果我們直接使用他們的sdk,一旦他們放棄了跟新,或者說,我們要換一個比這個更好用的sdk,那麼問題就來了,你需要把你所寫的下載程式碼全部換掉,如果是個小工程,還不算什麼事,如果大工程,那麼你就麻煩了.需要一個一個的改,多坑啊...我代表寶寶受不了大哭大哭

  不過不要緊,下面我們來封裝一下,第三方下載的sdk.第三方下載的sdk,有很多,就拿almofire舉例子了,

  1.首先下載almofire,這個自己google吧....好吧這裡有連結.

Almofire

  2.建立自己的封裝類HttpRequestOperation

  3.例項化分裝類

  下面一步一步的講解.

  1.下載Almofire

      這個在GitHub上已經有了,可以直接下載,並且上邊也有說明,具體的就看他們的說明文件,如果你仔細看的話,他也是不建議直接使用,而是也需要你封裝一下的.

  2.建立自己的封裝類HttpRequestOperation

     這個使用swift寫的,我就直接用swift程式碼講解了.首先需要定義一個下載的管理類,Manger 例項 manager,因為它是一個單例類,所以只需要使用這個例項就可以了.

     然後需要定義一個結束的回撥的方法,

<span style="font-size:18px;">   typealias finishedTask = (data: AnyObject?,success: Bool) -> Void
</span>

    這個是在下載結束後回撥的方法,還需要一個URLString.下載的地址,我建議定義成字串型別,在真正使用的時候在轉換成URL型別.

    下面就是下載方法:

func main() {
        
    
        
        let url = NSURLRequest(URL: NSURL(string: stringURL)!);
        let request = manager.request(url);
        requestNet = request;
        request.response { (reqs, respose, data, error) in

            
            dispatch_async(dispatch_get_main_queue(), {
                
                guard let tempData = data else {
                    self.finiTask(data:<span style="font-family: Arial, Helvetica, sans-serif;">error</span>,success: false);
                    return;
                }
                self.finiTask(data: tempData,success: true);
            })
            
        }
        request.resume();
 }

   上面的很簡單,沒有什麼太難的,有一點需要注意一下,就是結束回撥的方法self.finiTask(),一定不能為空,否則會出問題.

   3,例項化分裝類

   最好不要直接這樣使用,應為也有很多麻煩事,最好在繼承這個類,然後在使用,那麼這麼簡單就已經封裝好了.

    總結:

    上邊寫的很簡單,但是也有很多地方要注意,最主要的還是上邊的函式,基本上已經夠用的,他的方便之處是,如果以後要換下載第三方的sdk ,那麼你直接把main()函式操作換掉即可,哦太好了,只需要一個方法技能,就能解決所有的問題,是不是有點小激動.哈哈,好吧,好東西總是要分享的.

    溫馨提示:

     如果有不明白之處或者想要原始碼.我都可以提供給你.你只需要留言,並留下聯絡方式,我就發給你.如果大家注意到標題,會發現有個一,那就說明還會有二,嘿嘿,希望繼續關注我的部落格,我會繼續為大家講解裡邊的小祕密的.

相關推薦

簡單封裝網路下載almofire()

     網路下載是作為一個iOS程式必須懂得的技術.雖然已經有大牛封裝非常好用的下載sdk,功能也非常強大,並且基本上你都不用怎麼在新增新的功能就可以直接使用.非常方便.    但是有個問題,如果我

簡單封裝網路請求工具類

package com.mjd.imitate_jd.utils; import com.mjd.imitate_jd.api.GetInterface; import java.util.concurrent.TimeUnit; import okhttp3.OkHt

Retrofit+Rxjava 網路請求的簡單封裝)(觀察者模式)

我通過公司一個上線App介面來進行Retrofit+Rxjava 的簡單學習 http://x-phone.cn/api/v1.0/DeletePrivateContact 當然你直接訪問上面的url是無法獲取伺服器Json資料的,因為是需要封裝請求體,

MongoDB 系列() C# 類似EF語法簡單封裝

reference cor family sha 測試 性別 權限 lec 情況 之前寫過一篇關於MongoDB的封裝 發現太過繁瑣 於是打算從新寫一篇簡易版 1:關於MongoDB的安裝請自行百度,進行權限認證的時候有一個小坑,3.0之後授權認證方式默認的SCRAM-SH

)vmware虛擬機器配置網路/下載安裝mysql

(一)安裝vmware和centOS 下載VMware,我這裡下的是VMware.Workstation.14 下載centos虛擬機器,官網即可下載,我下的是CentOS-6.10-x86_64,64位的 先安裝VMware,安裝完:   點選 “建立新的虛

Jboot框架excel匯入匯出模板下載簡單封裝

需要用到的的類 主控制器 package io.jboot.admin.controller.ImportController; import java.util.ArrayList; import java.util.List; import javax.val

Linux網路程式設計():一個簡單的socket程式

伺服器: /* *tcp_server.c */ #include <stdio.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include

Android自定義網路資料載入等待框的簡單封裝

先上效果圖(在5.0以上機型顯示效果,如果是4.0會變為灰色): 自定義Dialog如下: public class LoadingCustom extends Dialog{ pr

python selenium的使用、檔案下載、登入跳轉問題和簡單封裝

這幾天折騰selenium,折騰的夠嗆,我們拿窮遊網來舉例吧,起因是因為要下載窮遊網所有的旅遊錦囊,它的檔案是PDF格式的,點選這個按鈕即可下載,但有個前提,它需要登入,於是就拿手機註冊了一個 起初為了方便,我是打算用phantomjs+selenium這

Fetch網路請求簡單封裝

//fetch網路請求簡單封裝,支援超時入口 class FetchUtil { //初始化工具類 init(){ this.url = ''; this.method = 'GET'; this

Android 網路訪問框架retrofit2,okhttp3之簡單封裝,kotlin原始碼

本文章需要用到的引用//okhttp compile 'com.squareup.okhttp3:okhttp:3.8.0' //retrofit compile 'com.squareup.retrofit2:retrofit:2.3.0' //rxjava compile

Retrofit + RxJava + OkHttp 讓網路請求變的簡單-封裝

前面一篇文章講了一下Retrofit+ RxJava 請求網路的一些基本用法,還沒有看過的可以去看一下Retrofit + RxJava + OkHttp 讓網路請求變的簡單-基礎篇,正如標題所說的,Retrofit+RxJava 是讓我們的網路請求變得簡單,程式碼精簡

使用執行緒進行網路圖片下載

一、執行緒阻塞的概念 在android中,主執行緒被阻塞會導致應用無法進行重新整理UI介面,應用無法響應,給使用者帶來不好的體驗。如果,主執行緒阻塞的時間過長,系統會丟擲ANR異常(Application Not Response). 任何耗時操作都不可以寫在主執行緒中,下

xUtils的網路請求簡單封裝

其他的前提條件就不多說了,只要你會使用xutils就完全可以使用。不多說了,直接上程式碼。 HttpxUtils.java類: /**  * @Title 封裝xUtils網路請求  * @Authour zhoujp  * @Time 2016年7月27日 下午3:25:

okHttp封裝,使用超簡單網路請求實現

文章內容概要: 框架需要解決的問題,及思路; 具體實施。 說明 okHttp是一款實用高效,使用簡單的網路模組實現,雖然使用簡單,但要在專案中使用還是得進行簡單的封裝,不可能每次請求都去寫十幾,甚至幾十行相同的程式碼,這樣是相當低效的,說這麼多都算

Android----------OkHttp網路請求框架Get和Post簡單封裝(泛型)

請求框架的類: OkHttp依賴: compile 'com.squareup.okhttp3:okhttp:3.8.1' RecyclerView依賴: compile 'com.android.support:recyclerview-v7:26.0.0-alpha1

【Android 網路資料解析實現一個簡單的新聞例項()】

      一般安卓在學到非同步任務AsyncTask之後都會有個安卓小專案的任務。得到(荔枝新聞,茶百科等)新聞網路介面來解析網路圖片或文字到ListView元件上顯示。其中要使用到的知識大概有:獲取網路資料(HttpUtil),解析網路資料(NewsParse),防止因

unix網路程式設計卷: 第八章:簡單UDP客戶端伺服器通訊(二)-解決客戶端一直等待問題

接上: 當伺服器未啟動,客戶端啟動後,傳送訊息,會造成客戶端一直等待,Sendto之後卡死在Recvfrom,然後進行修改。 伺服器程式碼不變: #include"unp.h" intmain(int argc, char **argv) { intsockfd; s

Android APP更新下載工具類——簡單封裝DownloadManager

幾乎所有APP都包含了檢查更新功能,更新下載功能的實現方式常用的有兩種:1、使用App網路框架的檔案下載請求;2、使用自帶的DownloadManager類;本文介紹第二種,簡單封裝一下DownloadManager進行下載更新。重要宣告:本文嚴格意義上來說並非原創,參考了

Android網路程式設計之一:原生網路訪問簡單封裝

前言:轉眼間2017了,去年給自己定的一週一篇部落格被拖成了一月一篇,後來忙著找工作也荒廢了。竟然還被CSDN部落格之星提名,又點燃了擼部落格的激情。 作為一個android codder,網略訪問基本上在專案中都會用到,常用的獲取JSON資料、下載檔案(