2011-09-12 31 views
5

Tôi đang sử dụng đoạn mã sau:ASIHTTPRequest Basic Authentication không

NSString *params = [NSString stringWithFormat:@"{\"username\": \"%@\", \"password\": \"%@\", \"client_id\": \"%@\", \"client_secret\": \"%@\"}", 
        mFieldUsername.text, mFieldPassword.text, [NTDefaults clientId], [NTDefaults clientSecret]]; 
NSLog(@"Params:\n%@", params); 

NSURL *url = [NSURL URLWithString:[[NTDefaults baseEndpointUrl] stringByAppendingString:@"/api/token.json"]]; 
ASIHTTPRequest *request = [ASIFormDataRequest requestWithURL:url]; 
[request addRequestHeader:@"Content-Type" value:@"application/json"]; 
[request addRequestHeader:@"Content-Length" value:[NSString stringWithFormat:@"%d",params.length]]; 
[request setAuthenticationScheme:(NSString *) kCFHTTPAuthenticationSchemeBasic]; 
[request setUsername:@"user"]; 
[request setPassword:@"pass"]; 
[request setShouldPresentCredentialsBeforeChallenge:YES]; 

[request setPostBody:[params dataUsingEncoding:NSUTF8StringEncoding]]; 

NSLog(@"Post Body: %@", request.postBody); 
NSLog(@"Headers: %@", request.requestHeaders); 
NSLog(@"URL: %@", url.absoluteString); 
[request setDelegate:self]; 
[request startAsynchronous]; 

nào đang trở lại:

Lỗi: Xác thực cần thiết

Không ai có bất kỳ ý tưởng về điều này? Được xác thực thành công bằng ASIHTTPRequest?

Trả lời

7

Tôi sử dụng thành công:

request.shouldPresentCredentialsBeforeChallenge = YES; 
[request addBasicAuthenticationHeaderWithUsername:@"myUser" 
             andPassword:@"myPass"]; 

tôi không sử dụng setAuthenticationScheme để xác thực cơ bản của tôi.

+0

Cảm ơn, tôi nghĩ rằng điều này có liên quan nhiều hơn đến nội dung bài đăng. Bây giờ tôi đang thiết lập nó với [request addPostValue: mFieldUsername.text forKey: @ "username"]; vv Mặc dù vậy, giải pháp của bạn cũng hữu ích ... chắc chắn đã làm việc. Cảm ơn! – Herm