我正嘗試使用來自iPhone應用程序的NSURLRequest向HTTP RESTful站點進行身份驗證。我把base64編碼的用戶/密碼傳遞給NSURLRequest中的「授權」頭,並在其後面加上「Basic」一詞。但是,我不斷收到身份驗證錯誤的另一端。這是我的代碼。如果我執行手動CURL請求,它就會起作用。我也檢查過,以確保Base64編碼正確,用戶,傳遞和URL正確。使用HTTP身份驗證的NSURL請求
NSMutableURLRequest *urlRequest = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:url]];
NSString *basicAuthCredentials = [NSString stringWithFormat:@"%@:%@", user, pass];
NSString *authValue = [NSString stringWithFormat:@"Basic %@", AFBase64EncodedStringFromString(basicAuthCredentials)];
authValue = [authValue stringByReplacingOccurrencesOfString:@"\n" withString:@""];
[urlRequest setValue:authValue forHTTPHeaderField:@"Authorization"];
[urlRequest setHTTPMethod: @"GET"];
NSData *httpData = [self encodeDictionary:data];
[urlRequest setHTTPBody:httpData];
NSHTTPURLResponse *response;
NSError *error;
NSData* result = [NSURLConnection sendSynchronousRequest:urlRequest returningResponse:&response error:&error];
同步請求的任何原因,而不是異步? – klcjr89
爲什麼你有這條線 - authValue = [authValue stringByReplacingOccurrencesOfString:@「\ n」withString:@「」];其他一切似乎都好。 – Kedar
它看起來像我忘了URL中的斜槓。感謝您的回答,併爲此感到遺憾。同步的原因是這是其他ViewControllers調用的共享方法(這是在AppDelegate中)。 – user4819