これは 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);
}];
しかし、それは機能していません。私は常に「失敗しました」と表示され、ページには「無効な資格情報」と表示されます。
そこで私は周りを見回して、認証チャレンジに対応する必要があることを知りましたが、それはすでに行われています. それを行うメソッドを実行すると、資格情報はゼロ (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 接続、およびそれに対応するすべてのジャズを使用しないのはなぜでしょうか?
間違ったメソッドを呼び出しているのでしょうか? クライアントを介してそれを強制する方法はありますか?
または、すべてのリクエストの資格情報を設定する別のより良い方法はありますか?
どんな助けでも大歓迎です!ありがとう!