Objective-c Basic HTTP Authentication

How can I repeat this in objective-c

curl -u rick@email.com:mypassword http://foo.lighthouseapp.com/projects.xml 

I played with the ASIHTTPRequest library, but I can’t understand what it is,

obviously sending my request also returns an authentication error:

 -(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); } } 

It’s probably very simple, I just missed something pretty important

+7
authentication objective-c lighthouse
source share
3 answers

From the ASIHTTPRequest documentation

With request header

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

If you don't want to use any frameworks (like me), you can do as follows:

 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]; 
+2
source

If you are using ASIHTTPRequest, this is all you need:

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

All Articles