这适用于iOS版的Restkit v0.2.0。
我正在尝试通过设置HTTP客户端的默认凭据来使用Windows身份验证,以便在请求的身份验证受到质疑时,它可以正常工作。
我这样做:
[[RKObjectManager sharedManager].HTTPClient setDefaultCredential:[NSURLCredential credentialWithUser:usr password:pass persistence:NSURLCredentialPersistenceForSession]];
然后我尝试获取我的对象:
[[RKObjectManager sharedManager].router.routeSet addRoute:[RKRoute routeWithClass:[Applications class] pathPattern:@"portfolio" method:RKRequestMethodGET]];
[RKObjectManager.sharedManager getObjectsAtPath:@"portfolio" parameters:nil success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult)
{
NSLog(@"It Worked: %@", [mappingResult array]);
} failure:^(RKObjectRequestOperation *operation, NSError *error) {
NSLog(@"It Failed: %@", error);
}];
但它不起作用,我总是得到#34;它失败了#34;并且页面显示"无效的凭证"。
所以我开始环顾四周,发现我需要回应身份验证挑战,但这已经完成了。如果我通过执行它的方法,我的凭据是nil(0x00000000)。我走过的方法就是这个:
- (void)connection:(NSURLConnection *)connection
didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge;
所以我做了一些探索,发现在这个方法中设置了defaultCredentials:
- (AFHTTPRequestOperation *)HTTPRequestOperationWithRequest:(NSURLRequest *)urlRequest...
但不是这个,这就是被称为的人:
- (NSMutableURLRequest *)requestWithMethod:(NSString *)method
path:(NSString *)path
parameters:(NSDictionary *)parameters
所以我的证书永远不会被设定,我不明白为什么。特别是为什么它不会使用HTTPRequest和HTTPClient连接以及所有相应的爵士乐呢?
我可能会说错方法吗?有没有办法强制它通过客户端?
或者是否有另一种更好的方法来为所有请求设置凭据?
任何帮助表示赞赏!谢谢!