【问题标题】:AFNetworking 3.0 status codeAFNetworking 3.0 状态码
【发布时间】:2016-01-22 11:10:08
【问题描述】:

我正在使用 AFNetworking 3.0,但无法获取成功或失败的状态码。

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
[manager GET:[NSString stringWithFormat:@"%@%@",BASE_URL,url] parameters:parameters progress:^(NSProgress * _Nonnull downloadProgress) {
                    // TODO: show progress somewhere
                } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
                    NSLog(@"%@",responseObject);
                    // get status here
                } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {

                    // get status here
                }];

【问题讨论】:

    标签: ios objective-c afnetworking-3


    【解决方案1】:

    这是工作代码:

    [afHttpSessionManager GET:@"blablabla/bla" parameters:nil progress:nil success:^(NSURLSessionTask *task, id responseObject) {
        // success
    } failure:^(NSURLSessionTask *operation, NSError *error) {
        // failure
        NSHTTPURLResponse *response = (NSHTTPURLResponse *) [operation response];
        NSInteger statusCode = [response statusCode];
        NSLog(@"RESPONSE CODE: %i", statusCode);
    }];
    

    【讨论】:

      【解决方案2】:

      希望对您有所帮助!!!

      typedef enum RequestTypes{
      
      GET,
      POST,
      PUT,
      DELETE
      
      }RequestType;
      
      @property (nonatomic, strong) AFHTTPSessionManager *manager;    
      
      self.manager = [[AFHTTPSessionManager alloc] initWithBaseURL:[NSURL URLWithString:urlString]]; // Base URL here, not entire URL
      self.manager.requestSerializer = [AFJSONRequestSerializer serializer];
      
      
       //Add Headers to request if any.  // header is a dictionary of key value pair.
      for (NSString *key in [headers allKeys]) {
          [self.manager.requestSerializer setValue:[headers valueForKey:key] forHTTPHeaderField:key];
      }
      
      /* Serialize request by type */ /* Type can be GET, POST etc */
      
      NSString *requestTypeMethod = [self getStringForRequestType:type];
      
      /* enter your URL here excluding base url  */ 
      
      NSMutableURLRequest *request = [self.manager.requestSerializer requestWithMethod:requestTypeMethod URLString:[[NSURL URLWithString:urlString relativeToURL:_manager.baseURL] absoluteString] parameters:params error:nil];
      
      NSURLSessionDataTask *dataTask = [self.manager dataTaskWithRequest:request completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) {
      
       // here you will get actual response, NSURL response as well  and error if any.      
      
      }];
      
      [dataTask resume];
      
      
      #pragma mark - GET Request type as string
      -(NSString *)getStringForRequestType:(RequestType)type {
      
      NSString *requestTypeString;
      
      switch (type) {
          case GET:
              requestTypeString = @"GET";
              break;
      
          case POST:
              requestTypeString = @"POST";
              break;
      
          case PUT:
              requestTypeString = @"PUT";
              break;
      
          case DELETE:
              requestTypeString = @"DELETE";
              break;
      
          default:
              requestTypeString = @"GET";
              break;
       }
      
         return requestTypeString;
      }
      

      【讨论】:

        【解决方案3】:

        你必须使用 AFURLSessionManager 的方法来获取 NSURLResponse 对象 像这样。由于 AFHTTPSessionManager 是 AFURLSessionManager 的子类,它为网络调用提供了方便的方法。

        NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
        AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration];
        

        通过使用 AFURLSessionManager 调用任何方法,如 dataTaskWithRequestdownloadTaskWithRequest,您将获得 NSURLResponse 对象并从中获得成功的状态码或失败。

        【讨论】:

        • 我有点新,你能指导我如何发送 get 和 post 请求吗?
        • 请参考我的更新答案!如果对您有帮助,请接受并投票。
        猜你喜欢
        • 2014-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多