请求 addValue: forHTTPHeaderField 获取令牌但不将其发送到 RestKit 中的服务器
Posted
技术标签:
【中文标题】请求 addValue: forHTTPHeaderField 获取令牌但不将其发送到 RestKit 中的服务器【英文标题】:request addValue: forHTTPHeaderField gets the token but does not sends it to server in RestKit 【发布时间】:2013-11-08 08:35:27 【问题描述】:在我的应用程序中,我必须从我的 API 中获取一个令牌,使用它进行 base 64 编码,然后我必须将它附加到我的所有 api 请求中。
我的现状
使用 AFNetworking,我设置了我的自定义标头“授权”并将我的令牌与我自己的 base 64 编码作为用户名:密码一起发送,(这就是为什么我这样设置它的原因是在 RestKit 中使用 setAuthenticationwithusername:andPassword 方法)。我就是这样打电话的。
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 进行映射的示例。
感谢您的帮助。
【问题讨论】:
【参考方案1】:setValue:forKey:
是标准的 KVC 方法,与设置标头无关(反正直接)。
RestKit 在后台使用 AFNetworking,因此可以通过使用您拥有的客户端 (initWithHTTPClient:
) 创建对象管理器或获取客户端并对其进行配置 (HTTPClient
) 来重用您的配置。
【讨论】:
以上是关于请求 addValue: forHTTPHeaderField 获取令牌但不将其发送到 RestKit 中的服务器的主要内容,如果未能解决你的问题,请参考以下文章