【问题标题】:How can I add a request header with AFNetworking?如何使用 AFNetworking 添加请求标头?
【发布时间】:2014-03-26 06:55:54
【问题描述】:

我想在我的应用程序中使用 AFNetworking 类来与服务器通信。

我是这个图书馆的新手。这是我的代码:

 NSDictionary *user=[[NSDictionary alloc]initWithObjectsAndKeys:@"hiteshp",@"userName",@"12345^",@"password", nil];
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
AFHTTPRequestSerializer *requestSerializer = [AFHTTPRequestSerializer serializer];
[requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
manager.requestSerializer=requestSerializer;   //[AFJSONRequestSerializer serializer];
[manager POST:@"myURL" parameters:user success:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSLog(@"JSON: %@ %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Error: %@", error);
}];

我想在这个请求中添加标头。我试过了,但它不起作用。如果我写了注释行,那么请求就完成了,但我还想再添加一个字段“授权”来请求设置。 以及如何打印请求头?

【问题讨论】:

    标签: ios iphone afnetworking-2


    【解决方案1】:

    我知道为时已晚,但这里有一段代码可以满足您的需求

    NSString *finalyToken = [[NSString alloc]initWithFormat:@"Bearer %@",user.token];
     AFHTTPRequestOperationManager *manager =
    [[AFHTTPRequestOperationManager alloc] initWithBaseURL:[NSURL URLWithString:@"https://server1.appscserver.de/api"]];
    [manager.requestSerializer setValue:finalyToken forHTTPHeaderField:@"Authorization"];
    

    希望对某人有所帮助

    【讨论】:

    • 感谢 joan 的回复。我现在对 AFNetworking 有了很好的体验。
    • @vivek 我也在尝试发送授权承载标头,但不工作.. 401 Unathorized。我认为'[manager.requestSerializer setValue:finalyToken forHTTPHeaderField:@"Authorization"];'不是设置身份验证的正确方法。标题
    • @Nil 它一直对我有用,也许标题字段的名称不同,在我现在正在工作的项目上它被称为“X-Auth”。 “授权”是最常见的一种,但请确保您使用的是正确的。
    • @Nil 当然“Bearer”也是可选的,取决于您的网络服务。有时仅使用令牌就足够了。
    • 这个错误实际上是设置不记名字符串 nil 的错误 setter 方法的原因。总之谢谢。干杯..
    【解决方案2】:

    在您的代码中使用它:

    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
        manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/html", @"application/json", nil];
    
    //Authorization    
    [manager.requestSerializer setAuthorizationHeaderFieldWithUsername:userName password:password];
    

    【讨论】:

    • 在“id”类型的对象上找不到属性“acceptableContentTypes”的错误
    【解决方案3】:
    [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
    [request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
    

    【讨论】:

      【解决方案4】:

      在 php 文件中添加: header('Content-type: application/json');

      在 xcode 中: manager.responseSerializer = [AFJSONResponseSerializer serializer];

      xcode 示例代码:

      NSDictionary *parameters = @{@"key1": @"value1",
                                   @"key2": @"value2"};
      
          AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
      
          manager.responseSerializer = [AFJSONResponseSerializer serializer];
      
          [manager POST:[NSString stringWithFormat:@"http://%@", Url] parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
              NSLog(@"JSON: %@", responseObject);
      
          } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
              NSLog(@"Error: %@", error);
      
          }];
      

      【讨论】:

      • 我认为您遇到了错误"Request failed: unacceptable content-type: text/html",如果是,那么此解决方案可以帮助您。当然,来自服务器的响应以 Json 格式发送,例如 json_encode($response)。如果没有,对不起。
      猜你喜欢
      • 2013-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-14
      • 1970-01-01
      • 2015-08-30
      • 1970-01-01
      相关资源
      最近更新 更多