1

在我的 iPhone 应用程序中,我试图在 iphone 上显示来自我的服务器的图像,这需要授权。我正在尝试使用 NSURLConnection 来获取图像,但它没有要求我提供用户凭据。即它根本不会使用 didReceiveAuthenticationChallenge 方法。谁能帮我解决这个问题?

4

2 回答 2

6

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

NSMutableURLRequest *someURLReq = ...
NSString *auth = ...
[someURLReq setValue:auth forHTTPHeaderField:@"Authorization"];

authHTTP 基本身份验证的情况下,使用Dave Dribin 的 base64 NSData 类别的内容将是:

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

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

于 2009-04-19T22:30:32.100 回答
0

由于您没有发布任何代码,因此很难说。我会仔细检查并确保您在 NSURLConnection 上正确设置了委托成员。如果这不是问题,请尝试使用 HTTP 调试器并确保 URL 实际上触发了身份验证请求。

于 2009-04-17T21:35:24.030 回答