資料介紹
軟件簡介
YiNetwork是一個的HTTP請求封裝庫,基于AFNetworking的AFHTTPSessionManager。
YiNetwork主要是一個基類庫,主要是兩個類YiBaseRequest和YiBaseModel.
之所以創建兩個基類,是為了讓各個請求之間的耦合性降低,能夠非常簡單的實現一個請求,并且在上層很簡單調用一個請求。每一個請求一個子類也非常能夠方便團隊協作,每個人都可以管理自己的請求模塊。
另外,由于Apple在網絡請求方面由NSURLConnection(iOS 2-9)轉向NSURLSession(iOS7以上),隨之AFNetworking 3.0也就廢棄了NSURLConnection相關的 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,當然你也可以不用使用它,自己解析JSON數據或者其它格式的數據
YiBaseRequest
YiBaseRequest必須子類化
屬性
@property?(nonatomic,?strong)?NSMutableDictionary?*getParams; @property?(nonatomic,?strong)?NSMutableDictionary?*postParams;
可以在子類自定義的init方法里面,加入需要的GET參數或者POST參數
@property?(nonatomic,?assign)?NSInteger?retryCount; @property?(nonatomic,?assign)?NSInteger?retryIndex;
retryCount表示請求出錯時重試的次數,默認為0;retryIndex表示正在重試第幾次
方法
?- (void)requestWithSuccess:(void(^)(YiBaseModel *model,NSURLSessionTask *task))success ? ? ? ? ? ? ? ? ? failure:(void(^)(NSError *error,NSURLSessionTask *task))failure;
數據請求的方法,只要在上層調用該方法就可以獲得請求成功或者失敗的反饋,以得到YiBaseModel的數據。
-?(YiHTTPRequestMethod)requestMethod;
需要實現的子類方法,表示請求方法,默認是YiHTTPRequestMethodGet為GET請求
-?(YiBaseModel?*)responseModelWithData:(id)data;
處理請求到得數據
-?(NSString?*)pathName; -?(NSString?*)rootUrl;
pathName表示請求的具體URL路徑;rootUrl表示請求的URL
-?(AFConstructingBlock)constructingBodyBlock;
當需要上傳文件時可以使用
-?(void)cancel;
取消當前的NSURLSessionTask對象,也就是取消這次請求
發送一個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
發送一個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)下載 370次下載
- AD 2D標準封裝庫下載 22次下載
- AD PCB封裝庫下載 0次下載
- 開源網絡協議分析器WireShark軟件下載 15次下載
- cadence軟件PCB封裝庫 0次下載
- HH常見的PCB封裝庫相關文件下載 36次下載
- 如何進行Cadence PCB封裝庫的制作及使用 0次下載
- C++開源庫的詳細資料合集免費下載
- C++的開源庫大全詳細資料說明
- 通用封裝庫(protel/AD版本通用)資料下載 0次下載
- Android開發的各大網絡請求庫實際案例 4次下載
- powerpcb(pads)封裝庫下載
- protel封裝庫protel元件封裝庫
- 使用NS1串口服務器HTTP模式上傳服務器數據 98次閱讀
- Vitis加速庫:廣泛且性能優化的開源庫 541次閱讀
- 高并發場景下請求合并 292次閱讀
- 基于Nginx配置origin限制跨域請求 1162次閱讀
- 如何使用 ESP-AT實現HTTP請求 1065次閱讀
- HTTP狀態碼你知道幾個 589次閱讀
- MongoDB開源文檔數據庫的安裝 965次閱讀
- Elasticsearch 8作為開源軟件正式發布 2302次閱讀
- 詳談一些主流開源數據庫及工具 2451次閱讀
- Java編程:發送HTTP請求到服務器 2979次閱讀
- 一文讀懂Http和Https的區別 1991次閱讀
- 如何發起 HTTP 請求流程 4827次閱讀
- Python如何爬取實時變化的WebSocket數據 3439次閱讀
- NASA的開源軟件是什么?NASA的開源軟件的詳細分析 7186次閱讀
- HTTP協議的使用方式和設計原理講解 4113次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數據手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多