文章原網址點擊>>>>>>>>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,否則一直使用同一個
增加了自動清除緩存的策略,由開發者決定是否自動清除緩存,可設置上限大小