IPhone中的HttpBasicAuthentication

nbo*_*jja 1 iphone nsurlconnection

在我的iPhone应用程序中,我试图从我的服务器上显示iphone上的图像,这需要授权.我正在尝试使用NSURLConnection来获取图像,但它并没有要求我提供用户凭据.即它根本没有去过didReceiveAuthenticationChallenge方法.任何人都可以帮我解决这个问题吗?

dun*_*cox 6

您可以自己计算必要的Authorization标头,并在创建NSURLConnection之前手动将其应用于传出的NSURLRequest,如下所示:

NSMutableURLRequest *someURLReq = ...
NSString *auth = ...
[someURLReq setValue:auth forHTTPHeaderField:@"Authorization"];
Run Code Online (Sandbox Code Playgroud)

的内容auth在HTTP基本身份验证的情况下,使用戴夫Dribin的NSData的的base64类别是:

NSString *username = ...
NSString *password = ...
NSString *combo = [NSString stringWithFormat:@"%@:%@", username, password];
NSData *comboData = [NSData dataWithBytes:[combo UTF8String] length:combo.length];
NSString *auth = [NSString stringWithFormat:@"Basic %@", [comboData encodeBase64]];
Run Code Online (Sandbox Code Playgroud)

请注意,这不是加密,密码是纯文本用于所有实际目的,除非您使用SSL连接,否则将被嗅探.