سؤال

كيف يمكنني تكرار هذا في Objective-C

curl -u rick@email.com: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);
    }
}

ربما يكون هذا بسيطًا جدًا ، فأنا أفتقد شيئًا كبيرًا جدًا

هل كانت مفيدة؟

المحلول

من الوثائق ASIHTTPrequest

برأس طلب

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

نصائح أخرى

إذا كنت لا تريد استخدام أي أطر عمل (مثلي) ، يمكنك القيام به في الطريق التالي:

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];

إذا كنت تستخدم ASIHTPrequest ، فهذا كل ما هو مطلوب:

 request.shouldPresentCredentialsBeforeChallenge = YES;
 [request addBasicAuthenticationHeaderWithUsername:@"USER" andPassword:@"PASSWORD"];
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top