資料介紹
軟件簡介
YiNetwork是一個的HTTP請求封裝庫,基于AFNetworking的AFHTTPSessionManager。
YiNetwork主要是一個基類庫,主要是兩個類YiBaseRequest和YiBaseModel.
之所以創(chuàng)建兩個基類,是為了讓各個請求之間的耦合性降低,能夠非常簡單的實現(xiàn)一個請求,并且在上層很簡單調(diào)用一個請求。每一個請求一個子類也非常能夠方便團隊協(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次下載
 - 如何進行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次閱讀
 
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
 - 1.06 MB | 532次下載 | 免費
 - 2RK3399完整板原理圖(支持平板,盒子VR)
 - 3.28 MB | 339次下載 | 免費
 - 3TC358743XBG評估板參考手冊
 - 1.36 MB | 330次下載 | 免費
 - 4DFM軟件使用教程
 - 0.84 MB | 295次下載 | 免費
 - 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
 - 6.40 MB | 227次下載 | 免費
 - 6迪文DGUS開發(fā)指南
 - 31.67 MB | 194次下載 | 免費
 - 7元宇宙底層硬件系列報告
 - 13.42 MB | 182次下載 | 免費
 - 8FP5207XR-G1中文應(yīng)用手冊
 - 1.09 MB | 178次下載 | 免費
 
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
 - 0.00 MB | 234315次下載 | 免費
 - 2555集成電路應(yīng)用800例(新編版)
 - 0.00 MB | 33566次下載 | 免費
 - 3接口電路圖大全
 - 未知 | 30323次下載 | 免費
 - 4開關(guān)電源設(shè)計實例指南
 - 未知 | 21549次下載 | 免費
 - 5電氣工程師手冊免費下載(新編第二版pdf電子書)
 - 0.00 MB | 15349次下載 | 免費
 - 6數(shù)字電路基礎(chǔ)pdf(下載)
 - 未知 | 13750次下載 | 免費
 - 7電子制作實例集錦 下載
 - 未知 | 8113次下載 | 免費
 - 8《LED驅(qū)動電路設(shè)計》 溫德爾著
 - 0.00 MB | 6656次下載 | 免費
 
總榜
- 1matlab軟件下載入口
 - 未知 | 935054次下載 | 免費
 - 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
 - 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十天學(xué)會AVR單片機與C語言視頻教程 下載
 - 158M | 183279次下載 | 免費
 - 8proe5.0野火版下載(中文版免費下載)
 - 未知 | 138040次下載 | 免費
 
	                電子發(fā)燒友App
	            
	        
	        
          
        
        
	                    
                        
                        
                        
                        
                        


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