0

在我的应用程序中,我必须从我的 API 中获取一个令牌,使用它进行 base 64 编码,然后我必须将它附加到我的所有 api 请求中。

我的现状

使用 AFNetworking,我设置了我的自定义标头“授权”并将我的令牌与我自己的 base 64 编码作为用户名:密码一起发送,(这就是为什么我这样设置它是在 RestKit 中使用 setAuthenticationwithusername:andPasswordmethod)。这就是我打电话的方式。

NSString *TokenAsaHeaderValue =[NSString stringWithFormat:@"Token %@",EncodedToken];

    AFHTTPClient *httpClient = [[AFHTTPClient alloc]initWithBaseURL:[NSURL URLWithString:@"http://10.11.5.205:xxxx/"]];
    NSMutableURLRequest *request = [httpClient requestWithMethod:@"GET" path:@"/Games/Current/10" parameters:nil];
    [request addValue:TokenAsaHeaderValue forHTTPHeaderField:@"Authorization"];

    AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc]initWithRequest:request];
    [httpClient registerHTTPOperationClass:[AFHTTPRequestOperation class]];

    [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation*operation,id responseObject)

    {
        self.JSONRESULTS = (NSDictionary *)responseObject;
        NSLog(@"print this %@",_JSONRESULTS);
    }failure:^(AFHTTPRequestOperation*operation,NSError*error){NSLog(@"Error: %@",error);}];
        [operation start];

我的问题

我不知道如何映射这个。所以我想在这个电话中使用 RestKit。但是当我使用 nsurlrequest 时,我只能使用 setValue,它不会添加标题。当我尝试将其作为 nsmutableurlrequest 发送并添加值时,这是我得到的响应:

我的审判

使用 RestKit,我将这个 json 映射到应用程序委托中,然后使用 ObjectManager:

  [[RKObjectManager sharedManager]setValue:TokenAsaHeaderValue forKey:@"Authorization"];

这就是我得到的回应:

setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key Authorization.'

(此外,相同的映射工作正常,我能够在我们实现令牌请求之前获取对象。)

还有什么可以帮助 我如何在没有 RestKit 的情况下仅使用 AFNetworking 进行映射的示例。

我感谢您的帮助。

4

1 回答 1

1

setValue:forKey:是标准的 KVC 方法,与设置标头无关(无论如何直接)。

RestKit 在后台使用 AFNetworking,因此可以通过使用您拥有的客户端(initWithHTTPClient:)创建对象管理器或获取客户端并配置它(HTTPClient)来重用您的配置。

于 2013-11-08T09:38:16.733 回答