在我的应用中,我必须从我的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进行映射的示例。
我感谢您的帮助。
答案 0 :(得分:1)
setValue:forKey:
是标准的KVC方法,与设置标题无关(无论如何直接)。
RestKit使用AFNetworking,因此可以通过使用客户端(initWithHTTPClient:
)创建对象管理器或获取客户端并配置它(HTTPClient
)来重用您的配置。 / p>