请求addValue:forHTTPHeaderField获取令牌,但不会将其发送到RestKit中的服务器

时间:2013-11-08 08:35:27

标签: ios json restkit afnetworking

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

我的现状

使用AFNetworking,我设置我的自定义标题“Authorization”并将我的令牌与我自己的base 64编码一起发送为username:password,(这就是我设置它的原因是在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,我在app delegate中映射了这个json,然后使用ObjectManager:

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

这就是我得到的答案:

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

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

还有什么帮助 我只能在没有RestKit的情况下使用AFNetworking进行映射的示例。

我感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

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

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