資料介紹
軟件簡介
YiNetwork是一個的HTTP請求封裝庫,基于AFNetworking的AFHTTPSessionManager。
YiNetwork主要是一個基類庫,主要是兩個類YiBaseRequest和YiBaseModel.
之所以創(chuàng)建兩個基類,是為了讓各個請求之間的耦合性降低,能夠非常簡單的實現(xiàn)一個請求,并且在上層很簡單調(diào)用一個請求。每一個請求一個子類也非常能夠方便團(tuán)隊協(xié)作,每個人都可以管理自己的請求模塊。
另外,由于Apple在網(wǎng)絡(luò)請求方面由NSURLConnection(iOS 2-9)轉(zhuǎn)向NSURLSession(iOS7以上),隨之AFNetworking 3.0也就廢棄了NSURLConnection相關(guān)的 AFURLConnectionOperation,AFHTTPRequestOperation,AFHTTPRequestOperationManager 三個類,并且建議使用AFHTTPSessionManager,所以YiBaseRequest也是基于AFHTTPSessionManager的封 裝。
YiNetwork目前依賴JSONModel version1.1.2和AFNetworking version2.6.1,是一套值得選擇的App請求方案。
Podfile
platform?:ios,?'7.0'pod?"YiNetwork",?"~>?0.9.2"
YiBaseModel
YiBaseModel繼承自第三方庫JSONModel,當(dāng)然你也可以不用使用它,自己解析JSON數(shù)據(jù)或者其它格式的數(shù)據(jù)
YiBaseRequest
YiBaseRequest必須子類化
屬性
@property?(nonatomic,?strong)?NSMutableDictionary?*getParams; @property?(nonatomic,?strong)?NSMutableDictionary?*postParams;
可以在子類自定義的init方法里面,加入需要的GET參數(shù)或者POST參數(shù)
@property?(nonatomic,?assign)?NSInteger?retryCount; @property?(nonatomic,?assign)?NSInteger?retryIndex;
retryCount表示請求出錯時重試的次數(shù),默認(rèn)為0;retryIndex表示正在重試第幾次
方法
?- (void)requestWithSuccess:(void(^)(YiBaseModel *model,NSURLSessionTask *task))success ? ? ? ? ? ? ? ? ? failure:(void(^)(NSError *error,NSURLSessionTask *task))failure;
數(shù)據(jù)請求的方法,只要在上層調(diào)用該方法就可以獲得請求成功或者失敗的反饋,以得到Y(jié)iBaseModel的數(shù)據(jù)。
-?(YiHTTPRequestMethod)requestMethod;
需要實現(xiàn)的子類方法,表示請求方法,默認(rèn)是YiHTTPRequestMethodGet為GET請求
-?(YiBaseModel?*)responseModelWithData:(id)data;
處理請求到得數(shù)據(jù)
-?(NSString?*)pathName; -?(NSString?*)rootUrl;
pathName表示請求的具體URL路徑;rootUrl表示請求的URL
-?(AFConstructingBlock)constructingBodyBlock;
當(dāng)需要上傳文件時可以使用
-?(void)cancel;
取消當(dāng)前的NSURLSessionTask對象,也就是取消這次請求
發(fā)送一個GET請求
只要分別子類化YiBaseRequest和YiBaseModel,在上層使用就非常簡單
//通過GET請求獲取用戶信息 ????YiGetUserInfoRequest?*getUserInfoRequest=[[YiGetUserInfoRequest?alloc]?init]; ????[getUserInfoRequest?requestWithSuccess:^(YiBaseModel?*model,NSURLSessionTask?*task){ ???????? ????????NSLog(@"username?is?%@",((YiUserInfoModel?*)model).name); ???????? ????}?failure:^(NSError?*error,NSURLSessionTask?*task){ ???????? ????}];
子類化YiBaseModel為YiUserInfoModel
@interface?YiUserInfoModel?:?YiBaseModel @property(nonatomic,strong)?NSString?*name; @end
子類化YiBaseRequest為YiGetUserInfoRequest
@implementation?YiGetUserInfoRequest
-(instancetype)init{
????self?=?[super?init];
????if?(self)?{
????????
????}
????return?self;
}
-(instancetype)initWithNameId:(NSString?*)nameId?{
????self?=?[super?init];
????if?(self)?{
????????
????????[self.getParams?setValue:nameId?forKey:@"name_id"];
????????
????}
????return?self;
}
-?(NSString?*)pathName
{
????return?@"users/coderyi";
}
-?(YiHTTPRequestMethod)requestMethod
{
????return?YiHTTPRequestMethodGet;
}
-?(YiBaseModel?*)responseModelWithData:(id)data
{
????
????return?[[YiUserInfoModel?alloc]?initWithDictionary:data?error:nil];
}
@end
發(fā)送一個POST請求
//通過POST請求修改用戶信息
????YiModifyUserInfoRequest?*modifyUserInfoRequest=[[YiModifyUserInfoRequest?alloc]?initWithNameId:@"coderyi"];
????[modifyUserInfoRequest?requestWithSuccess:^(YiBaseModel?*model,NSURLSessionTask?*task){
????????
????????NSLog(@"username?is?%@",((YiUserInfoModel?*)model).name);
????????
????}?failure:^(NSError?*error,NSURLSessionTask?*task){
????????
????}];
子類化YiBaseRequest為YiModifyUserInfoRequest
@implementation?YiModifyUserInfoRequest
-(instancetype)initWithNameId:(NSString?*)nameId?{
????self?=?[super?init];
????if?(self)?{
????????
????????[self.postParams?setValue:nameId?forKey:@"name_id"];
????????
????}
????return?self;
}
-?(NSString?*)pathName
{
????return?@"users/coderyi";
}
-?(YiHTTPRequestMethod)requestMethod
{
????return?YiHTTPRequestMethodPost;
}
-?(YiBaseModel?*)responseModelWithData:(id)data
{
????
????return?[[YiUserInfoModel?alloc]?initWithDictionary:data?error:nil];
}
@end
上傳圖片
?//上傳一張圖片 ????????UIImage?*image; ????????YiUploadImageRequest?*uploadImageRequest=[[YiUploadImageRequest?alloc]?initWithImage:image]; ????????[uploadImageRequest?requestWithSuccess:^(YiBaseModel?*model,NSURLSessionTask?*task){ ????????????NSLog(@"model?is?%@",model); ???? ????????}?failure:^(NSError?*error,NSURLSessionTask?*task){ ???????????? ????????}];
子類化YiBaseRequest為YiUploadImageRequest
@implementation?YiUploadImageRequest{
????UIImage?*_image;
}
-?(id)initWithImage:(UIImage?*)image?{
????self?=?[super?init];
????if?(self)?{
????????_image?=?image;
????}
????return?self;
}
-?(AFConstructingBlock)constructingBodyBlock?{
????return?^(id?formData)?{
????????NSData?*data?=?UIImageJPEGRepresentation(_image,?0.9);
????????NSString?*name?=?@"image";
????????NSString?*formKey?=?@"image";
????????NSString?*type?=?@"image/jpeg";
????????[formData?appendPartWithFileData:data?name:formKey?fileName:name?mimeType:type];
????};
}
@end
- 如何測試HTTP請求示例
- 適用于Java的Google HTTP客戶端庫使用教程 3次下載
- AD常用3D封裝庫(STEP)下載 398次下載
- AD 2D標(biāo)準(zhǔn)封裝庫下載 22次下載
- AD PCB封裝庫下載 0次下載
- 開源網(wǎng)絡(luò)協(xié)議分析器WireShark軟件下載 15次下載
- cadence軟件PCB封裝庫 0次下載
- HH常見的PCB封裝庫相關(guān)文件下載 37次下載
- 如何進(jìn)行Cadence PCB封裝庫的制作及使用 0次下載
- C++開源庫的詳細(xì)資料合集免費下載
- C++的開源庫大全詳細(xì)資料說明
- 通用封裝庫(protel/AD版本通用)資料下載 0次下載
- Android開發(fā)的各大網(wǎng)絡(luò)請求庫實際案例 4次下載
- powerpcb(pads)封裝庫下載
- protel封裝庫protel元件封裝庫
- 使用NS1串口服務(wù)器HTTP模式上傳服務(wù)器數(shù)據(jù) 430次閱讀
- Vitis加速庫:廣泛且性能優(yōu)化的開源庫 803次閱讀
- 高并發(fā)場景下請求合并 411次閱讀
- 基于Nginx配置origin限制跨域請求 1393次閱讀
- 如何使用 ESP-AT實現(xiàn)HTTP請求 1294次閱讀
- HTTP狀態(tài)碼你知道幾個 690次閱讀
- MongoDB開源文檔數(shù)據(jù)庫的安裝 1129次閱讀
- Elasticsearch 8作為開源軟件正式發(fā)布 2459次閱讀
- 詳談一些主流開源數(shù)據(jù)庫及工具 2579次閱讀
- Java編程:發(fā)送HTTP請求到服務(wù)器 3100次閱讀
- 一文讀懂Http和Https的區(qū)別 2194次閱讀
- 如何發(fā)起 HTTP 請求流程 4975次閱讀
- Python如何爬取實時變化的WebSocket數(shù)據(jù) 3598次閱讀
- NASA的開源軟件是什么?NASA的開源軟件的詳細(xì)分析 7444次閱讀
- HTTP協(xié)議的使用方式和設(shè)計原理講解 4272次閱讀
下載排行
本周
- 1PFC電路與BOOST電路設(shè)計實例分享
- 1.83 MB | 12次下載 | 4 積分
- 2世平基于靈動微 SPIN560C 的低壓無刷電機應(yīng)用方案
- 10.93 MB | 11次下載 | 免費
- 3電源測試報告-基于 國民技術(shù) N32L406 和杰華特 JW3376+3330 的 BMS 方案
- 6.47 MB | 11次下載 | 免費
- 4PWM控制器的控制方法
- 0.39 MB | 3次下載 | 4 積分
- 5電流檢測芯片F(xiàn)P135應(yīng)用說明
- 1.24 MB | 3次下載 | 免費
- 6全面解讀被動式與主動式PFC電路
- 1.27 MB | 1次下載 | 4 積分
- 7HC88L051F4低功耗芯片規(guī)格書
- 4.76 MB | 1次下載 | 免費
- 8CIU32D655x5數(shù)據(jù)手冊
- 2.14 MB | 1次下載 | 免費
本月
- 1常用電子元器件使用手冊
- 2.40 MB | 52次下載 | 免費
- 2高功率密度碳化硅MOSFET軟開關(guān)三相逆變器損耗分析
- 2.27 MB | 33次下載 | 10 積分
- 3PFC電路與BOOST電路設(shè)計實例分享
- 1.83 MB | 12次下載 | 4 積分
- 4世平基于靈動微 SPIN560C 的低壓無刷電機應(yīng)用方案
- 10.93 MB | 11次下載 | 免費
- 5電源測試報告-基于 國民技術(shù) N32L406 和杰華特 JW3376+3330 的 BMS 方案
- 6.47 MB | 11次下載 | 免費
- 6USB拓展塢PCB圖資料
- 0.57 MB | 11次下載 | 免費
- 7MS1826 HDMI 多功能視頻處理器數(shù)據(jù)手冊
- 4.51 MB | 9次下載 | 免費
- 8HAL9303線性霍爾效應(yīng)傳感器技術(shù)手冊
- 0.70 MB | 9次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935134次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費下載
- 340992 | 191424次下載 | 10 積分
- 5十天學(xué)會AVR單片機與C語言視頻教程 下載
- 158M | 183352次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81600次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費下載
- 0.02 MB | 73818次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65991次下載 | 10 積分
電子發(fā)燒友App






創(chuàng)作
發(fā)文章
發(fā)帖
提問
發(fā)資料
發(fā)視頻
上傳資料賺積分
評論