IOS網絡支持庫AFNetworking(1)

以微博爲例子:
新建一個數據交互的類繼承於NSObject
命名爲:AFNetWork.h

判斷網絡狀態:

  -(void)reach
{

    /*
     AFNetworkReachabilityStatusUnknown          = -1 未知
     AFNetworkReachabilityStatusNotReachable     = 0  無連接
     AFNetworkReachabilityStatusReachableViaWWAN = 1  3G網絡
     AFNetworkReachabilityStatusReachableViaWiFi = 2  wifi
     */
    //它是個單例
    //如果要檢查網絡的狀態的變化,必須用檢查管理器的單例
    [[AFNetworkReachabilityManager sharedManager] startMonitoring];
    //檢查網絡狀態
    [[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {


        NSLog(@"stactus=%ld",status);

    }];
}

這裏寫圖片描述

這裏寫圖片描述

ViewController.m

    AFNetWork *afnetwork=[[AFNetWork alloc] init];//初始化對象
    [afnetwork reach];//調用reach方法上面
    [afnetwork getRequestWithUrl:@"這裏放請求的URL"
    WithParameters:@{@"請求參數的key":@"請求的value"}];
    -(void)getRequestWithUrl:(NSString *)urlString WithParameters:(NSDictionary *)dictionary
{
    NSURL *url=[NSURL URLWithString:urlString];
    AFHTTPSessionManager *manager=[AFHTTPSessionManager manager];//用來管理的
    [manager GET:url.absoluteString//拿到完整的網址
      parameters:dictionary//把對應的數據發送回去
        progress:^(NSProgress * _Nonnull downloadProgress) {
            NSLog(@"%@",downloadProgress);//進度類型的類
        } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
            NSLog(@"responseObject=%@",responseObject);
        } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
            NSLog(@"error=%@",error);
        }];

}

通過代碼在微博放內容:

ViewController.m

這裏寫圖片描述

這裏寫圖片描述

這裏寫圖片描述
status:爲微博發送內容的接口名字key
value:爲內容

  [afnetwork postWeiboWithUrl:@"這裏放請求的URL"
  WithParmeters:@{@"請求參數的key":@"請求的value"},@"status":@"1234"}];
-(void)postWeiboWithUrl:(NSString *)urlString WithParmeters:(NSDictionary *)dictionary
{
    AFHTTPSessionManager *manger=[AFHTTPSessionManager manager];
    //返回格式json
    //這裏的到的是JSon數據,默認的responseSerializer也是JSon數據
    manger.responseSerializer=[AFJSONResponseSerializer serializer];//這裏的代碼不要寫錯 不要寫成AFJSONRequestSerializer
    //得到的是NSData 數據
    //manager.responseSerializer=[AFHTTPResponseSerializer serializer];
    manger.responseSerializer.acceptableContentTypes=[NSSet setWithObjects:@"application/json", nil];//接收返回類型
    NSURL *url=[NSURL URLWithString:urlString];
    [manger POST:url.absoluteString
      parameters:dictionary
        progress:^(NSProgress * _Nonnull uploadProgress) {
            NSLog(@"uploadProgress=%@",uploadProgress);
        } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
            NSLog(@"responseObject=%@",responseObject);
        } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
            NSLog(@"error=%@",error);
        }];
}

使用代碼子微博發送圖片和內容

這張圖片是微博API裏面的:

這裏寫圖片描述

    -(void)postWeiboWithUrl:(NSString *)urlString WithParmeters:(NSDictionary *)dictionary WithImage:(NSString *)imageName
{
    AFHTTPSessionManager *manger=[AFHTTPSessionManager manager];
    manger.responseSerializer=[AFJSONResponseSerializer serializer];
    manger.responseSerializer.acceptableContentTypes=[NSSet setWithObjects:@"application/json   ", nil];
    NSURL *url=[NSURL URLWithString:urlString];

    [manger POST:url.absoluteString//POST請求
      parameters:dictionary
constructingBodyWithBlock:^(id<AFMultipartFormData>  _Nonnull formData) {

    NSData *data=UIImagePNGRepresentation([UIImage imageNamed:@"anglaybaby"]);//圖片轉data

    NSData *data1=UIImageJPEGRepresentation([UIImage imageNamed:@"anglaybaby"], 0.5);//參數倍壓縮 壓縮0.5倍
    [formData appendPartWithFileData:data1
                                name:@"pic"//API對應的名字
                            fileName:@"a.png"//名字無所謂
                            mimeType:@"png"];

} progress:^(NSProgress * _Nonnull uploadProgress) {
    NSLog(@"uploadProgress=%@",uploadProgress);
} success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
    NSLog(@"responseObject=%@",responseObject);//請求回來的數據
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
    NSLog(@"error=%@",error);
}];
}

ViewController.m

    //發佈內容和圖片
    [afnetwork postWeiboWithUrl:@"這裏放請求的URL"
    WithParmeters:@{@"請求參數的key":@"請求的value"},@"對應發送內容接口名":@"發送的內容"} 
    WithImage:@"發送的圖片名字"];
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章