日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

AFNetworking网络请求与图片上传工具(POST)

發布時間:2023/12/18 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 AFNetworking网络请求与图片上传工具(POST) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

AFNetworking網絡請求與圖片上傳工具(POST)

.h文件

#import <Foundation/Foundation.h>/** 成功Block */ typedef void(^SuccessBlockType) (id responsData); /** 失敗Block */ typedef void(^FaileBlockType) (NSError *error);@interface NetDataEngine : NSObject//網絡請求 + (void)postServerUrl:(NSString *)url parameters:(NSDictionary *)parameters success:(SuccessBlockType)success failure:(FaileBlockType)failure;//上傳圖片 + (void)uploadWith:(UIImage *)upImg success:(SuccessBlockType)success failure:(FaileBlockType)failure;@end

?

.m文件

#import "NetDataEngine.h" #import "AFNetworking.h"@implementation NetDataEngine+(AFHTTPSessionManager *)manager {AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];// 聲明上傳的是json格式的參數,需要你和后臺約定好,不然會出現后臺無法獲取到你上傳的參數問題manager.requestSerializer = [AFHTTPRequestSerializer serializer]; // 上傳普通格式// manager.requestSerializer = [AFJSONRequestSerializer serializer]; // 上傳JSON格式// 聲明獲取到的數據格式manager.responseSerializer = [AFHTTPResponseSerializer serializer]; // AFN不會解析,數據是data,需要自己解析// manager.responseSerializer = [AFJSONResponseSerializer serializer]; // AFN會JSON解析返回的數據// 個人建議還是自己解析的比較好,有時接口返回的數據不合格會報3840錯誤,大致是AFN無法解析返回來的數據// 超時時間[manager.requestSerializer willChangeValueForKey:@"timeoutInterval"];manager.requestSerializer.timeoutInterval = 10.f;//設置請求超時時間[manager.requestSerializer didChangeValueForKey:@"timeoutInterval"];return manager; }+ (void)postServerUrl:(NSString *)url parameters:(NSDictionary *)parameters success:(SuccessBlockType)success failure:(FaileBlockType)failure {AFHTTPSessionManager *manager = [self manager];[manager POST:url parameters:parameters progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil];// JGLog(@"%@",dict);success(dict);} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { // JGLog(@"error: %@",error);failure(error);}]; }+ (void)uploadWith:(UIImage *)upImg success:(SuccessBlockType)success failure:(FaileBlockType)failure {// 創建管理者對象AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];[manager POST:UP_PIC parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {// 獲取圖片數據NSData *fileData = UIImagePNGRepresentation(upImg);// 設置上傳圖片的名字NSDateFormatter *formatter = [[NSDateFormatter alloc] init];formatter.dateFormat = @"yyyyMMddHHmmss";NSString *str = [formatter stringFromDate:[NSDate date]];NSString *fileName = [NSString stringWithFormat:@"%@.png", str];[formData appendPartWithFileData:fileData name:@"image" fileName:fileName mimeType:@"image/png"];} progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {//上傳成功后回調success(responseObject);} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
//失敗回調 failure(error);}]; }@end

?如果網絡請求超時,就在請求失敗中執行超時操作,如:取消指示器,提示用戶網絡存在問題等。

 if (error.code == -1001) {

? ? ? ?   [MBProgressHUD showError:@"網絡超時,請檢查網絡"];

? ? ? ? }

  //隱藏指示器

? ? ? ?[SVProgressHUD dismiss];

轉載于:https://www.cnblogs.com/GJ-ios/p/5772925.html

總結

以上是生活随笔為你收集整理的AFNetworking网络请求与图片上传工具(POST)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。