HYBNetworking三方網絡請求神器

文章原網址點擊>>>>>>>>HYBNetworking

概述

對于開發人員來說,學習網絡層知識是必備的,任何一款App的開發,都需要到網絡請求接口。很多朋友都還在使用原生的NSURLConnection一行一行地寫,代碼到處是,這樣維護起來更困難了。

對于使用AFNetworking的朋友來說,很多朋友都是直接調用AFNetworking的API,這樣不太好,無法做到全工程統一配置。

最好的方式就是對網絡層再封裝一層,全工程不允許直接使用AFNetworking的API,必須調用我們自己封裝的一層,如此一來,任何網絡配置都可以在這一層里配置好,使用的人無須知道里面在干嘛,只管調用就可以了。

本篇為基于AFNetworking3.0以上的版本,支持iOS7及其以上版本。若要支持iOS6,請閱讀舊版本:基于AFNetworking2.5封裝,舊版本不再維護!

常用接口類型

應用開發過程中,所使用類型通常是GET、POST及上傳圖片。因此,這里只是對這幾種類型提供API。

GET接口

這里提供了兩個GET請求的API,需要一般情況下GET請求都是直接寫一個完整的URL,但是有時候為了參數可讀性更強,改成傳一個字典過來更容易閱讀。

HYBResponseSuccess是響應成功的回調,返回的是字典,外部再轉換成模型就可以了。

HYBResponseFail是響應失敗的回調,只有一個NSError對象,外部可接收處理。

/*!*@author黃儀標,15-11-1513:11:50*

*??GET請求接口,若不指定baseurl,可傳完整的url

*

*@paramurl???? 接口路徑,如/path/getArticleList

*@paramrefreshCache 是否刷新緩存。由于請求成功也可能沒有數據,對于業務失敗,只能通過人為手動判斷

*@paramparams??接口中所需要的拼接參數,如@{"categoryid":@(12)}

*@paramsuccess 接口成功請求到數據的回調

*@paramfail????接口請求數據失敗的回調

*

*@return返回的對象中有可取消請求的API*/

+(HYBURLSessionTask*)getWithUrl:(NSString*)url

refreshCache:(BOOL)refreshCache

success:(HYBResponseSuccess)success

fail:(HYBResponseFail)fail;//多一個params參數+(HYBURLSessionTask*)getWithUrl:(NSString*)url

refreshCache:(BOOL)refreshCacheparams:(NSDictionary*)paramssuccess:(HYBResponseSuccess)success

fail:(HYBResponseFail)fail;//多一個帶進度回調+(HYBURLSessionTask*)getWithUrl:(NSString*)url

refreshCache:(BOOL)refreshCacheparams:(NSDictionary*)paramsprogress:(HYBGetProgress)progress

success:(HYBResponseSuccess)success

fail:(HYBResponseFail)fail;

POST接口

對于POST請求類型的接口,只有一個,看注釋就可以明白如何使用了。

/*!*@author黃儀標,15-11-1513:11:50*

*??POST請求接口,若不指定baseurl,可傳完整的url

*

*@paramurl???? 接口路徑,如/path/getArticleList

*@paramparams??接口中所需的參數,如@{"categoryid":@(12)}

*@paramsuccess 接口成功請求到數據的回調

*@paramfail????接口請求數據失敗的回調

*

*@return返回的對象中有可取消請求的API*/+(HYBURLSessionTask*)postWithUrl:(NSString*)url

refreshCache:(BOOL)refreshCacheparams:(NSDictionary*)paramssuccess:(HYBResponseSuccess)success

fail:(HYBResponseFail)fail;+(HYBURLSessionTask*)postWithUrl:(NSString*)url

refreshCache:(BOOL)refreshCacheparams:(NSDictionary*)paramsprogress:(HYBPostProgress)progress

success:(HYBResponseSuccess)success

fail:(HYBResponseFail)fail;

圖片上傳接口

接口一次只能上傳一張圖片,通常也是這么處理的。這里是以文件流的形式來上傳的哦。其中,mineType為image/jpeg。

/**

*@author黃儀標, 16-01-31 00:01:40

*

*??圖片上傳接口,若不指定baseurl,可傳完整的url

*

*@paramimage????????????圖片對象

*@paramurl??????????????上傳圖片的接口路徑,如/path/images/

*@paramfilename???? 給圖片起一個名字,默認為當前日期時間,格式為"yyyyMMddHHmmss",后綴為`jpg`

*@paramname???????????? 與指定的圖片相關聯的名稱,這是由后端寫接口的人指定的,如imagefiles

*@parammimeType???? 默認為image/jpeg

*@paramparameters?? 參數

*@paramprogress???? 上傳進度

*@paramsuccess??????上傳成功回調

*@paramfail???????????? 上傳失敗回調

*

*@return*/+(HYBURLSessionTask*)uploadWithImage:(UIImage*)image

url:(NSString*)url

filename:(NSString*)filename

name:(NSString*)name

mimeType:(NSString*)mimeType

parameters:(NSDictionary*)parameters

progress:(HYBUploadProgress)progress

success:(HYBResponseSuccess)success

fail:(HYBResponseFail)fail;

上傳文件接口

/**

*@author黃儀標, 16-01-31 00:01:59

*

*??上傳文件操作

*

*@paramurl??????????????????????上傳路徑

*@paramuploadingFile????待上傳文件的路徑

*@paramprogress???????? 上傳進度

*@paramsuccess??????????????上傳成功回調

*@paramfail???????????????? 上傳失敗回調

*

*@return*/+(HYBURLSessionTask*)uploadFileWithUrl:(NSString*)url

uploadingFile:(NSString*)uploadingFile

progress:(HYBUploadProgress)progress

success:(HYBResponseSuccess)success

fail:(HYBResponseFail)fail;

文件下載接口

/*!*@author黃儀標,16-01-0815:01:11*

*??下載文件

*

*@paramurl?????????? 下載URL

*@paramsaveToPath????下載到哪個路徑下

*@paramprogressBlock 下載進度

*@paramsuccess?????? 下載成功后的回調

*@paramfailure?????? 下載失敗后的回調*/+(HYBURLSessionTask*)downloadWithUrl:(NSString*)url

saveToPath:(NSString*)saveToPath

progress:(HYBDownloadProgress)progressBlock

success:(HYBResponseSuccess)success

failure:(HYBResponseFail)failure;

取消請求

/**

*@author黃儀標

*

*??取消所有請求

*/+(void)cancelAllRequest;/**

*@author黃儀標

*

*??取消某個請求。如果是要取消某個請求,最好是引用接口所返回來的HYBURLSessionTask對象,

*??然后調用對象的cancel方法。如果不想引用對象,這里額外提供了一種方法來實現取消某個請求

*

*@paramurl??????????????URL,可以是絕對URL,也可以是path(也就是不包括baseurl)

*/+(void)cancelRequestWithURL:(NSString*)url;

在使用中,可以通過這樣來調用:

// 取消全部請求//??[HYBNetworking cancelAllRequest];// 取消單個請求方法一//??[HYBNetworking cancelRequestWithURL:path];// 取消單個請求方法二//??[task cancel];

緩存

/**

*@author黃儀標

*

*??默認只緩存GET請求的數據,對于POST請求是不緩存的。如果要緩存POST獲取的數據,需要手動調用設置

*??對JSON類型數據有效,對于PLIST、XML不確定!

*

*@paramisCacheGet?????????? 默認為YES

*@paramshouldCachePost??默認為NO

*/+(void)cacheGetRequest:(BOOL)isCacheGetshoulCachePost:(BOOL)shouldCachePost;/**

*@author黃儀標

*

*??獲取緩存總大小/bytes

*

*@return緩存大小

*/+(unsignedlonglong)totalCacheSize;/**

*@author黃儀標

*

*??清除緩存

*/+(void)clearCaches;/**

*??默認不會自動清除緩存,如果需要,可以設置自動清除緩存,并且需要指定上限。當指定上限>0M時,

*??若緩存達到了上限值,則每次啟動應用則嘗試自動去清理緩存。

*

*@parammSize????????????????緩存上限大小,單位為M(兆),默認為0,表示不清理

*/+(void)autoToClearCacheWithLimitedToSize:(NSUInteger)mSize;

BaseURL

這里還提供了兩個公共接口,一個是用于設置或者更新網絡接口的基礎URL,一個是獲取當前設置使用的網絡接口基礎URL。

/*!*@author黃儀標,15-11-1513:11:45*

*??用于指定網絡請求接口的基礎url,如:

*??http://henishuo.com或者http://101.200.209.244*??通常在AppDelegate中啟動時就設置一次就可以了。如果接口有來源

*??于多個服務器,可以調用更新

*

*@parambaseUrl 網絡接口的基礎url*/+(void)updateBaseUrl:(NSString*)baseUrl;+(NSString*)baseUrl;

添加公共請求頭參數

通常每家公司的接口都會設置公共的請求頭參數,以代表是公司的接口。默認已經配置了可接收的類型,但是如果需要額外配置,可通過調用此api來添加:

/*!*@author黃儀標,15-11-1613:11:41*

*??配置公共的請求頭,只調用一次即可,通常放在應用啟動的時候配置就可以了

*

*@paramhttpHeaders 只需要將與服務器商定的固定參數設置即可*/+(void)configCommonHttpHeaders:(NSDictionary*)httpHeaders;

請求、響應類型

默認responseType和requestType都是JSON格式。如果不使用JSON,可以全局配置成自己希望的格式即可。若不配置,默認就是JSON。

/*!*@author黃儀標,15-12-2515:12:45*

*??配置請求格式,默認為JSON。如果要求傳XML或者PLIST,請在全局配置一下

*

*@paramrequestType 請求格式,默認為JSON

*@paramresponseType 響應格式,默認為JSO,

*@paramshouldAutoEncode YESorNO,默認為NO,是否自動encode url

*@paramshouldCallbackOnCancelRequest 當取消請求時,是否要回調,默認為YES*/+(void)configRequestType:(HYBRequestType)requestType

responseType:(HYBResponseType)responseType

shouldAutoEncodeUrl:(BOOL)shouldAutoEncode

callbackOnCancelRequest:(BOOL)shouldCallbackOnCancelRequest;

URL編碼問題

考慮到網絡請求接口中,有時候會有中文參數,這時候就會請求失敗,因此我們要對這種類型的URL進行編碼,否則請求會失敗。這里是開啟或者關閉自動將URL編碼的接口,默認為NO,表示不開啟。

/*!*@author黃儀標,15-11-1515:11:16*

*??開啟或關閉是否自動將URL使用UTF8編碼,用于處理鏈接中有中文時無法請求的問題

*

*@paramshouldAutoEncode YESorNO,默認為NO*/+(void)shouldAutoEncodeUrl:(BOOL)shouldAutoEncode;

格式化接口數據打印日志

/*!*@author黃儀標,15-11-1514:11:40*

*??開啟或關閉接口打印信息

*

*@paramisDebug 開發期,最好打開,默認是NO*/+(void)enableInterfaceDebug:(BOOL)isDebug;

通常在AppDelegate中應用啟動的代理方法中調用設置為開啟就可以了。不過是否設置為開啟,當應用以發布證書打包時,都不會打印日志,因為這里做了處理,可放心使用?,F在已經公開在外部,項目中都可以使用哦:

// 項目打包上線都不會打印日志,因此可放心。#ifdefDEBUG#defineHYBAppLog(s,...)NSLog(@"[%@ inline%d] ===============>%@",[[NSStringstringWithUTF8String:__FILE__]lastPathComponent],__LINE__,[NSStringstringWithFormat:(s),##__VA_ARGS__] )#else#defineHYBAppLog(s,...)#endif

安裝使用

現在已經支持cocoapods,引入以下命令即可:

pod 'HYBNetworking', '~> 3.3.0'

或者直接下載源代碼,拖入工程使用!

源代碼

請大家到我的github下載源代碼:HYBNetworking

溫馨提示

最近老有人問:編譯一直報錯library not found for -lAFNetworking什么問題?

注意:如果您是使用cocoapods來管理第三方庫的,那么直接通過上面安裝使用的方式來安裝即可,然后pod update一下。如果您不是使用cocoapods來引入的,請手動將AFNetworking對應的版本添加到工程。

歷史版本變化

1.1

升級AFNetworking到2.5.4

新增帶上傳進度的API和帶進度的下載API,詳細請閱讀下面的博文

1.1.1

修改原來默認URLEncode由YES改為NO。

1.1.2

追加text/plain格式

1.1.3

追加兩個兼容性API,圖片上傳時可額外上傳參數

2.0.0

升級AFNetworking到3.0,基于AFNetworking3.0.4而寫的版本

支持iOS7.0及其以上版本

2.0.1

fix pod安裝2.0.0卻是1.1.3版本的問題

3.0.0

簡化API,以降低使用的要求

增加GET/POST數據緩存、獲取緩存大小、清空緩存功能

接口增加刷新緩存功能

增加取消所有請求、取消單個請求功能

格式化打印日志

增加對手動取消請求接口是否在失敗時還回調的控制

3.1.0

fix download data can’t start request.

3.2.0

增加請求超時設置

增加配置是否在網絡異常(無網絡)時自動嘗試從本地讀取緩存。

3.2.1

完善無網狀態下緩存的處理

3.2.2

將download url存儲修改

3.2.3

修改默認requestType為plainText,以解決很多小伙伴們出現后臺接收不到參數的問題!

3.3.0

修改AFSessionManager獲取方式為只使用一個,除非修改了BASEURL,否則一直使用同一個

增加了自動清除緩存的策略,由開發者決定是否自動清除緩存,可設置上限大小

2016-07-02 12:54 出處:清屏網人氣:309評論(0)

概述

對于開發人員來說,學習網絡層知識是必備的,任何一款App的開發,都需要到網絡請求接口。很多朋友都還在使用原生的NSURLConnection一行一行地寫,代碼到處是,這樣維護起來更困難了。

對于使用AFNetworking的朋友來說,很多朋友都是直接調用AFNetworking的API,這樣不太好,無法做到全工程統一配置。

最好的方式就是對網絡層再封裝一層,全工程不允許直接使用AFNetworking的API,必須調用我們自己封裝的一層,如此一來,任何網絡配置都可以在這一層里配置好,使用的人無須知道里面在干嘛,只管調用就可以了。

本篇為基于AFNetworking3.0以上的版本,支持iOS7及其以上版本。若要支持iOS6,請閱讀舊版本:基于AFNetworking2.5封裝,舊版本不再維護!

常用接口類型

應用開發過程中,所使用類型通常是GET、POST及上傳圖片。因此,這里只是對這幾種類型提供API。

GET接口

這里提供了兩個GET請求的API,需要一般情況下GET請求都是直接寫一個完整的URL,但是有時候為了參數可讀性更強,改成傳一個字典過來更容易閱讀。

HYBResponseSuccess是響應成功的回調,返回的是字典,外部再轉換成模型就可以了。

HYBResponseFail是響應失敗的回調,只有一個NSError對象,外部可接收處理。

/*!*@author黃儀標,15-11-1513:11:50*

*??GET請求接口,若不指定baseurl,可傳完整的url

*

*@paramurl???? 接口路徑,如/path/getArticleList

*@paramrefreshCache 是否刷新緩存。由于請求成功也可能沒有數據,對于業務失敗,只能通過人為手動判斷

*@paramparams??接口中所需要的拼接參數,如@{"categoryid":@(12)}

*@paramsuccess 接口成功請求到數據的回調

*@paramfail????接口請求數據失敗的回調

*

*@return返回的對象中有可取消請求的API*/+(HYBURLSessionTask*)getWithUrl:(NSString*)url

refreshCache:(BOOL)refreshCache

success:(HYBResponseSuccess)success

fail:(HYBResponseFail)fail;//多一個params參數+(HYBURLSessionTask*)getWithUrl:(NSString*)url

refreshCache:(BOOL)refreshCacheparams:(NSDictionary*)paramssuccess:(HYBResponseSuccess)success

fail:(HYBResponseFail)fail;//多一個帶進度回調+(HYBURLSessionTask*)getWithUrl:(NSString*)url

refreshCache:(BOOL)refreshCacheparams:(NSDictionary*)paramsprogress:(HYBGetProgress)progress

success:(HYBResponseSuccess)success

fail:(HYBResponseFail)fail;

POST接口

對于POST請求類型的接口,只有一個,看注釋就可以明白如何使用了。

/*!*@author黃儀標,15-11-1513:11:50*

*??POST請求接口,若不指定baseurl,可傳完整的url

*

*@paramurl???? 接口路徑,如/path/getArticleList

*@paramparams??接口中所需的參數,如@{"categoryid":@(12)}

*@paramsuccess 接口成功請求到數據的回調

*@paramfail????接口請求數據失敗的回調

*

*@return返回的對象中有可取消請求的API*/+(HYBURLSessionTask*)postWithUrl:(NSString*)url

refreshCache:(BOOL)refreshCacheparams:(NSDictionary*)paramssuccess:(HYBResponseSuccess)success

fail:(HYBResponseFail)fail;+(HYBURLSessionTask*)postWithUrl:(NSString*)url

refreshCache:(BOOL)refreshCacheparams:(NSDictionary*)paramsprogress:(HYBPostProgress)progress

success:(HYBResponseSuccess)success

fail:(HYBResponseFail)fail;

圖片上傳接口

接口一次只能上傳一張圖片,通常也是這么處理的。這里是以文件流的形式來上傳的哦。其中,mineType為image/jpeg。

/**

*@author黃儀標, 16-01-31 00:01:40

*

*??圖片上傳接口,若不指定baseurl,可傳完整的url

*

*@paramimage????????????圖片對象

*@paramurl??????????????上傳圖片的接口路徑,如/path/images/

*@paramfilename???? 給圖片起一個名字,默認為當前日期時間,格式為"yyyyMMddHHmmss",后綴為`jpg`

*@paramname???????????? 與指定的圖片相關聯的名稱,這是由后端寫接口的人指定的,如imagefiles

*@parammimeType???? 默認為image/jpeg

*@paramparameters?? 參數

*@paramprogress???? 上傳進度

*@paramsuccess??????上傳成功回調

*@paramfail???????????? 上傳失敗回調

*

*@return*/+(HYBURLSessionTask*)uploadWithImage:(UIImage*)image

url:(NSString*)url

filename:(NSString*)filename

name:(NSString*)name

mimeType:(NSString*)mimeType

parameters:(NSDictionary*)parameters

progress:(HYBUploadProgress)progress

success:(HYBResponseSuccess)success

fail:(HYBResponseFail)fail;

上傳文件接口

/**

*@author黃儀標, 16-01-31 00:01:59

*

*??上傳文件操作

*

*@paramurl??????????????????????上傳路徑

*@paramuploadingFile????待上傳文件的路徑

*@paramprogress???????? 上傳進度

*@paramsuccess??????????????上傳成功回調

*@paramfail???????????????? 上傳失敗回調

*

*@return*/+(HYBURLSessionTask*)uploadFileWithUrl:(NSString*)url

uploadingFile:(NSString*)uploadingFile

progress:(HYBUploadProgress)progress

success:(HYBResponseSuccess)success

fail:(HYBResponseFail)fail;

文件下載接口

/*!*@author黃儀標,16-01-0815:01:11*

*??下載文件

*

*@paramurl?????????? 下載URL

*@paramsaveToPath????下載到哪個路徑下

*@paramprogressBlock 下載進度

*@paramsuccess?????? 下載成功后的回調

*@paramfailure?????? 下載失敗后的回調*/+(HYBURLSessionTask*)downloadWithUrl:(NSString*)url

saveToPath:(NSString*)saveToPath

progress:(HYBDownloadProgress)progressBlock

success:(HYBResponseSuccess)success

failure:(HYBResponseFail)failure;

取消請求

/**

*@author黃儀標

*

*??取消所有請求

*/+(void)cancelAllRequest;/**

*@author黃儀標

*

*??取消某個請求。如果是要取消某個請求,最好是引用接口所返回來的HYBURLSessionTask對象,

*??然后調用對象的cancel方法。如果不想引用對象,這里額外提供了一種方法來實現取消某個請求

*

*@paramurl??????????????URL,可以是絕對URL,也可以是path(也就是不包括baseurl)

*/+(void)cancelRequestWithURL:(NSString*)url;

在使用中,可以通過這樣來調用:

// 取消全部請求//??[HYBNetworking cancelAllRequest];// 取消單個請求方法一//??[HYBNetworking cancelRequestWithURL:path];// 取消單個請求方法二//??[task cancel];

緩存

/**

*@author黃儀標

*

*??默認只緩存GET請求的數據,對于POST請求是不緩存的。如果要緩存POST獲取的數據,需要手動調用設置

*??對JSON類型數據有效,對于PLIST、XML不確定!

*

*@paramisCacheGet?????????? 默認為YES

*@paramshouldCachePost??默認為NO

*/+(void)cacheGetRequest:(BOOL)isCacheGetshoulCachePost:(BOOL)shouldCachePost;/**

*@author黃儀標

*

*??獲取緩存總大小/bytes

*

*@return緩存大小

*/+(unsignedlonglong)totalCacheSize;/**

*@author黃儀標

*

*??清除緩存

*/+(void)clearCaches;/**

*??默認不會自動清除緩存,如果需要,可以設置自動清除緩存,并且需要指定上限。當指定上限>0M時,

*??若緩存達到了上限值,則每次啟動應用則嘗試自動去清理緩存。

*

*@parammSize????????????????緩存上限大小,單位為M(兆),默認為0,表示不清理

*/+(void)autoToClearCacheWithLimitedToSize:(NSUInteger)mSize;

BaseURL

這里還提供了兩個公共接口,一個是用于設置或者更新網絡接口的基礎URL,一個是獲取當前設置使用的網絡接口基礎URL。

/*!*@author黃儀標,15-11-1513:11:45*

*??用于指定網絡請求接口的基礎url,如:

*??http://henishuo.com或者http://101.200.209.244*??通常在AppDelegate中啟動時就設置一次就可以了。如果接口有來源

*??于多個服務器,可以調用更新

*

*@parambaseUrl 網絡接口的基礎url*/+(void)updateBaseUrl:(NSString*)baseUrl;+(NSString*)baseUrl;

添加公共請求頭參數

通常每家公司的接口都會設置公共的請求頭參數,以代表是公司的接口。默認已經配置了可接收的類型,但是如果需要額外配置,可通過調用此api來添加:

/*!*@author黃儀標,15-11-1613:11:41*

*??配置公共的請求頭,只調用一次即可,通常放在應用啟動的時候配置就可以了

*

*@paramhttpHeaders 只需要將與服務器商定的固定參數設置即可*/+(void)configCommonHttpHeaders:(NSDictionary*)httpHeaders;

請求、響應類型

默認responseType和requestType都是JSON格式。如果不使用JSON,可以全局配置成自己希望的格式即可。若不配置,默認就是JSON。

/*!*@author黃儀標,15-12-2515:12:45*

*??配置請求格式,默認為JSON。如果要求傳XML或者PLIST,請在全局配置一下

*

*@paramrequestType 請求格式,默認為JSON

*@paramresponseType 響應格式,默認為JSO,

*@paramshouldAutoEncode YESorNO,默認為NO,是否自動encode url

*@paramshouldCallbackOnCancelRequest 當取消請求時,是否要回調,默認為YES*/+(void)configRequestType:(HYBRequestType)requestType

responseType:(HYBResponseType)responseType

shouldAutoEncodeUrl:(BOOL)shouldAutoEncode

callbackOnCancelRequest:(BOOL)shouldCallbackOnCancelRequest;

URL編碼問題

考慮到網絡請求接口中,有時候會有中文參數,這時候就會請求失敗,因此我們要對這種類型的URL進行編碼,否則請求會失敗。這里是開啟或者關閉自動將URL編碼的接口,默認為NO,表示不開啟。

/*!*@author黃儀標,15-11-1515:11:16*

*??開啟或關閉是否自動將URL使用UTF8編碼,用于處理鏈接中有中文時無法請求的問題

*

*@paramshouldAutoEncode YESorNO,默認為NO*/+(void)shouldAutoEncodeUrl:(BOOL)shouldAutoEncode;

格式化接口數據打印日志

/*!*@author黃儀標,15-11-1514:11:40*

*??開啟或關閉接口打印信息

*

*@paramisDebug 開發期,最好打開,默認是NO*/+(void)enableInterfaceDebug:(BOOL)isDebug;

通常在AppDelegate中應用啟動的代理方法中調用設置為開啟就可以了。不過是否設置為開啟,當應用以發布證書打包時,都不會打印日志,因為這里做了處理,可放心使用?,F在已經公開在外部,項目中都可以使用哦:

// 項目打包上線都不會打印日志,因此可放心。#ifdefDEBUG#defineHYBAppLog(s,...)NSLog(@"[%@ inline%d] ===============>%@",[[NSStringstringWithUTF8String:__FILE__]lastPathComponent],__LINE__,[NSStringstringWithFormat:(s),##__VA_ARGS__] )#else#defineHYBAppLog(s,...)#endif

安裝使用

現在已經支持cocoapods,引入以下命令即可:

pod 'HYBNetworking', '~> 3.3.0'

或者直接下載源代碼,拖入工程使用!

源代碼

請大家到我的github下載源代碼:HYBNetworking

溫馨提示

最近老有人問:編譯一直報錯library not found for -lAFNetworking什么問題?

注意:如果您是使用cocoapods來管理第三方庫的,那么直接通過上面安裝使用的方式來安裝即可,然后pod update一下。如果您不是使用cocoapods來引入的,請手動將AFNetworking對應的版本添加到工程。

歷史版本變化

1.1

升級AFNetworking到2.5.4

新增帶上傳進度的API和帶進度的下載API,詳細請閱讀下面的博文

1.1.1

修改原來默認URLEncode由YES改為NO。

1.1.2

追加text/plain格式

1.1.3

追加兩個兼容性API,圖片上傳時可額外上傳參數

2.0.0

升級AFNetworking到3.0,基于AFNetworking3.0.4而寫的版本

支持iOS7.0及其以上版本

2.0.1

fix pod安裝2.0.0卻是1.1.3版本的問題

3.0.0

簡化API,以降低使用的要求

增加GET/POST數據緩存、獲取緩存大小、清空緩存功能

接口增加刷新緩存功能

增加取消所有請求、取消單個請求功能

格式化打印日志

增加對手動取消請求接口是否在失敗時還回調的控制

3.1.0

fix download data can’t start request.

3.2.0

增加請求超時設置

增加配置是否在網絡異常(無網絡)時自動嘗試從本地讀取緩存。

3.2.1

完善無網狀態下緩存的處理

3.2.2

將download url存儲修改

3.2.3

修改默認requestType為plainText,以解決很多小伙伴們出現后臺接收不到參數的問題!

3.3.0

修改AFSessionManager獲取方式為只使用一個,除非修改了BASEURL,否則一直使用同一個

增加了自動清除緩存的策略,由開發者決定是否自動清除緩存,可設置上限大小

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,908評論 18 139
  • iOS網絡架構討論梳理整理中。。。 其實如果沒有APIManager這一層是沒法使用delegate的,畢竟多個單...
    yhtang閱讀 5,252評論 1 23
  • iOS CoreData介紹和使用(以及一些注意事項) 最近花了一點時間整理了一下CoreData,對于經常使用S...
    Pocket閱讀 23,069評論 34 92
  • AFHTTPRequestOperationManager 網絡傳輸協議UDP、TCP、Http、Socket、X...
    Carden閱讀 4,384評論 0 12
  • 網絡框架(以下稱NJAFNetworking)是基于AFNetworking框架的簡單封裝,基本功能包括POST請...
    PlusNie閱讀 4,380評論 9 49