2010-11-07 15 views
7

मैं कैसे उद्देश्य-सीऑब्जेक्टिव-सी HTTP मूल प्रमाणीकरण

curl -u [email protected]:mypassword http://foo.lighthouseapp.com/projects.xml 

मैं चारों ओर ASIHTTPRequest पुस्तकालय के साथ खेल रहा है, लेकिन यह पता लगाने की नहीं कर पा रहे इस नकल के बारे में जाना होगा,

स्पष्ट रूप से मेरा अनुरोध भेजने तो एक प्रमाणीकरण त्रुटि देता है जैसे:

-(void)submit:(id)sender { 
    NSURL *url = [NSURL URLWithString:@"http://ldn.lighthouseapp.com/projects/63254-londonist-20/tickets.xml"]; 
    ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 
    [request startSynchronous]; 
    NSError *error = [request error]; 
    if (!error) { 
     NSString *response = [request responseString]; 
     NSLog(@"response:%@",response); 
    } else { 
     NSLog(@"error:%@",error); 
    } 
} 

यह शायद बहुत सरल मैं सिर्फ कुछ सुंदर प्रमुख याद कर रहा हूँ है

+०१२३५१६४१०६

उत्तर

12

From ASIHTTPRequest Documentation

With a Request Header

[request addRequestHeader:@"Authorization" 
        value:[NSString stringWithFormat:@"Basic %@", 
          [ASIHTTPRequest base64forData: 
          [[NSString stringWithFormat:@"%@:%@", theUsername, thePassword] 
          dataUsingEncoding:NSUTF8StringEncoding]]]]; 
+0

धन्यवाद यह वास्तव में मेरी मदद की – mohitum

0

आप ASIHTTPRequest उपयोग कर रहे हैं, इस की आवश्यकता होती है:

request.shouldPresentCredentialsBeforeChallenge = YES; 
[request addBasicAuthenticationHeaderWithUsername:@"USER" andPassword:@"PASSWORD"]; 
2

किसी भी चौखटे (मेरे जैसे) का उपयोग नहीं करना चाहते, तो आप कर सकते हैं अगले तरीके से करें:

NSURL *url = [NSURL URLWithString: @"https://api.github.com"]; 
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; 

[request setHTTPMethod:@"GET"]; 
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; 

NSString *authStr = [NSString stringWithFormat:@"%@:%@", login, password]; 
NSData *authData = [authStr dataUsingEncoding:NSUTF8StringEncoding]; 
NSString *authValue = [NSString stringWithFormat:@"Basic %@", [authData base64EncodedStringWithOptions:0]]; 
[request setValue:authValue forHTTPHeaderField:@"Authorization"]; 

NSURLSession *session = [NSURLSession sharedSession]; 
[[session dataTaskWithRequest:request 
     completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { 
      if (!error) { 
       NSDictionary *responseDictionary = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error]; 
       NSLog(@"%@",responseDictionary); 
      } 
     }] resume]; 
संबंधित मुद्दे