首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AFNetworking报头

AFNetworking报头
EN

Stack Overflow用户
提问于 2016-02-29 12:44:16
回答 2查看 711关注 0票数 1

这是我用AFNetworking.上传照片的代码

代码语言:javascript
复制
NSMutableURLRequest *request = [[AFHTTPRequestSerializer serializer] multipartFormRequestWithMethod:@"POST" URLString:urlString parameters:params constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
    [formData appendPartWithFileData:dataImage name:@"file" fileName:@"Photo" mimeType:@"image/jpeg"];


} error:nil];


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

NSURLSessionUploadTask *uploadTask;
uploadTask = [manager
              uploadTaskWithStreamedRequest:request
              progress:^(NSProgress * _Nonnull uploadProgress) {
                  // This is not called back on the main queue.
                  // You are responsible for dispatching to the main queue for UI updates
                  dispatch_async(dispatch_get_main_queue(), ^{
                      //Update the progress view
                      NSLog(@"PROGRESS :%.2f", uploadProgress.fractionCompleted);
                      block(uploadProgress, nil);
                  });
              }
              completionHandler:^(NSURLResponse * _Nonnull response, id  _Nullable responseObject, NSError * _Nullable error) {
                  if (error) {
                      NSLog(@"Error: %@", error);
                  } else {
                      NSLog(@"%@ %@", response, responseObject);
                  }
              }];

[uploadTask resume];

但是我需要添加一个标头参数类型。我的头名是"GW-Token“

它返回错误,因为它需要检查令牌是否有效。标记应该在标头上。

我正在使用AFNetworking 3.0

,谢谢!

EN

回答 2

Stack Overflow用户

发布于 2016-02-29 12:50:24

希望这将有助于:

代码语言:javascript
复制
manager.requestSerializer = [AFJSONRequestSerializer serializer];
[manager.requestSerializer setValue:[NSString stringWithFormat:@"Bearer %@", [[NSUserDefaults standardUserDefaults] objectForKey:TOKEN]] forHTTPHeaderField:@"Authorization"];

更新:

这是为我工作的完全实现的代码:

代码语言:javascript
复制
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    manager.requestSerializer = [AFJSONRequestSerializer serializer];
    manager.responseSerializer = [AFJSONResponseSerializer serializer];
    [manager.requestSerializer setValue:[NSString stringWithFormat:@"Bearer %@", [[NSUserDefaults standardUserDefaults] objectForKey:TOKEN]] forHTTPHeaderField:@"Authorization"];
    [manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Accept"];
    [manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
    [manager POST:[NSString stringWithFormat:@"%@/users/updateProfile", DEFAULT_URL] parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
        [formData appendPartWithFileData:profileImage name:@"file" fileName:[NSString stringWithFormat:@"%@.jpg", imageName] mimeType:@"image/jpeg"];
    } progress:nil
          success:^(NSURLSessionDataTask *task, id responseObject) {
              completionHandler(responseObject);
          } failure:^(NSURLSessionDataTask *task, NSError *error) {
              NSData *errorData = error.userInfo[AFNetworkingOperationFailingURLResponseDataErrorKey];
              if (errorData) {

                  NSDictionary *serializedData = [NSJSONSerialization JSONObjectWithData: errorData options:kNilOptions error:nil];
                  errorHandler(serializedData);

              }else {
                  NSDictionary *noData = @{@"noData": @"No data!"};
                  errorHandler(noData);
              }
          }];
票数 1
EN

Stack Overflow用户

发布于 2016-02-29 13:11:14

@Yeshua,试着跟随一个设置标题字段。

代码语言:javascript
复制
  [request setValue:@"Your GW-Token Value" forHTTPHeaderField:@"GW-Token"];

然后序列化请求。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35699913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档