iOS開發-AFNetworking封裝Get(自定義HTTP Header)和Post請求及文件下載

来源:http://www.cnblogs.com/wangkejia/archive/2017/10/07/7634923.html
-Advertisement-
Play Games

前面提到AFNetworking是一個很強大的網路三方庫,首先你需要引入AFNetworking三方庫;如封裝的有誤還請指出,謝謝! 1.Get請求 /**Get請求 url 伺服器請求地址 success 伺服器響應返回的結果 faile 失敗的信息 */ + (void)getHttpReque ...


前面提到AFNetworking是一個很強大的網路三方庫,首先你需要引入AFNetworking三方庫;如封裝的有誤還請指出,謝謝!

1.Get請求

/**Get請求

 url 伺服器請求地址

 success 伺服器響應返回的結果

 faile  失敗的信息

 */

+ (void)getHttpRequestURL:(NSString *)url RequestSuccess:(void(^)(id repoes,NSURLSessionDataTask *task)) success RequestFaile:(void(^)(NSError *error))faile{

   AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

   manager.responseSerializer = [AFHTTPResponseSerializer serializer];//放棄解析

    ///自定義http header 此處可省略

   /// [manager.requestSerializer setValue:@"application/json"forHTTPHeaderField:@"Accept"];

   /// [manager.requestSerializer setValue:@"application/json;charset=utf-8"forHTTPHeaderField:@"Content-Type"];

   /// [manager.requestSerializer setValue:@"http header" forHTTPHeaderField:@"XiaoGuiGe"];

    [manager.requestSerializer setHTTPShouldHandleCookies:NO];

    [manager GET:url parameters:nil progress:^(NSProgress * _Nonnull downloadProgress) {

    } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {

        if (success) {

            //返回成功結果

            success(responseObject,task);

        }

    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {

        //返回失敗結果

        faile(error);

    }];

}

2.Post請求

/**Post請求

 url 伺服器請求地址

 pram 請求參數

 success 伺服器響應返回的結果

 faile  失敗的信息

 */

+ (void)postHttpRequestURL:(NSString *)url RequestPram:(id)pram RequestSuccess:(void(^)(id respoes))success RequestFaile:(void(^)(NSError *erro))faile{

   AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

    [manager POST:url parameters:pram progress:^(NSProgress * _Nonnull uploadProgress) {

        ///這裡面是進度

    } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {

        if (success) {

            //返回成功結果

            success(responseObject);

        }

    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {

        //返回失敗結果

        faile(error);

    }];

}

3.文件下載

+ (void)createDownloadFileWithURLString:(NSString *)URLString downloadFileProgress:(void (^)(NSProgress *))downloadFileProgress setupFilePath:(NSURL *(^)(NSURLResponse *))setupFilePath downloadCompletionHandler:(void (^)(NSURL *, NSError *))downloadCompletionHandler{

     NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:URLString]];

    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

    manager.requestSerializer = [AFHTTPRequestSerializer serializer];

    manager.responseSerializer = [AFHTTPResponseSerializer serializer];

    NSURLSessionDownloadTask *dataTask = [manager downloadTaskWithRequest:request progress:^(NSProgress * _Nonnull downloadProgress) {

        /**

         *  下載進度

         */

        downloadFileProgress(downloadProgress);

        

    } destination:^NSURL * _Nonnull(NSURL * _Nonnull targetPath, NSURLResponse * _Nonnull response) {

        /**

         *  設置保存目錄

         */        

        return setupFilePath(response);

    } completionHandler:^(NSURLResponse * _Nonnull response, NSURL * _Nullable filePath, NSError * _Nullable error) {

        /**

         *  下載完成

         */

        downloadCompletionHandler(filePath,error);

    }];

    [dataTask resume];

}

如有錯誤,還望指出!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 原文鏈接:http://www.zhangxinxu.com/wordpress/?p=466 以上代碼在IE10中測試與張老師文章中的效果有些出入,希望在以後的工作學習中引起註意,並且進行深度研究哈哈~ ...
  • 前端開發工具 1.1、 WebStorm介紹和下載 l 介紹 WebStorm是JetBrains 推出的一款強大的HTML5編輯工具,擁有豐富的代碼快速編輯,可以智能的補全代碼、代碼格式化、html提示以及代碼檢查和快速修複等,支持不同瀏覽器的提示,同時也是一款JavaScript 開發工具,擁有 ...
  • 最近的項目里用上了vue和element-ui。vue這種輕量級漸進式框架的舒適自不必說,但一直困擾著我的,是如何方便又優雅的彈出模態dialog... 對於我這種在jquery出現之前就用document.getElementById敲代碼的老頑固來說,我始終不能完全接受把dialog在編碼期就寫 ...
  • 1.獲取網頁可見區域的寬度:document.body.clientWidth ; 2.獲取網頁可見區域的高度:document.body.clientHeight; 3.獲取 網頁可見區域寬:document.body.offsetWidth; (包括邊線的寬度) 4.獲取網頁可見區域高:docu ...
  • CSS常見佈局方式 以下總結一下CSS中常見的佈局方式。本人才疏學淺,如有錯誤,請留言指出。 如需轉載,請註明出處: "CSS常見佈局方式" 目錄: 1. 使用BFC隱藏屬性 2. float + margin 3. absolute + margin 4. 聖杯佈局 5. 雙飛翼佈局 6. fle ...
  • 前言:最近開始做IOS端的游戲開發,因cocos2d-x更新太過頻繁,使得度娘上一兩年前的博客內容與目前實際情況矛盾很大。本該10分鐘搞定的事情讓我搞了半個十一黃金周。 本次我使用的macOS Sierra 版本10.12.6 (16G29),Xcode 9.0 cocos2d-x版本為3.15.1 ...
  • 陸陸續續做了一個半月左右的「喵嗚天氣」終於在今天下午成功提交到應用商店(騰訊應用寶)。期間遇到兩個小問題,記錄如下: 1、上傳安裝包失敗,提示「無法獲取簽名信息,請上傳有效包(110506)」。 安裝包是通過 Android Studio 中的 Build Generate Signed APK.. ...
  • 這是一個朋友曾經給我的一個文件,這裡我新建了一個基於NSObject對象的一個ChineseToSpell,.m文件內容有點多 .h文件內容 // // ChineseToSpell.h // #import <Foundation/Foundation.h> @interface ChineseT ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...