0

我想下载一个 HTML 文档来解析内容。服务器在进入此站点之前要求输入我的用户凭据。在 Java 中,我在这样的异步任务(JSoup)中进行了基本身份验证:

String base64login = new String(Base64.encodeBase64(loginDaten.getBytes()));
Document parsableDoc = Jsoup.connect(myUrl).header("Authorization","Basic"+base64login)
   .timeout(3000)
   .get();

但在 Objective-C 中,它并没有我想象的那么简单。在这里,我想将网站保存在 NSData-Object 或类似的东西(例如 NSString)中。有什么想法可以尽可能简单地解决这个问题吗?(如你所见,我是这个领域的专家……)

4

1 回答 1

0

你可以使用 NSURLConnection 类和 NSMutableURLRequest 来做到这一点。这个想法是让 NSMutableURLRequest 知道您想要使用哪种身份验证方法以及凭据(登录名/密码)。下面的代码应该做到这一点。(您将需要此链接http://cocoadev.com/wiki/BaseSixtyFour中的 base64Encoding 的 NSdata 类别)

self.receivedData = [[NSMutableData alloc] init];

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
NSString *authStr = [NSString stringWithFormat:@"%@:%@", @"login",@"password"];
NSData *authData = [authStr dataUsingEncoding:NSUTF8StringEncoding];
NSString *authValue = [NSString stringWithFormat:@"Basic %@", [authData base64Encoding]];
[request setValue:authValue forHTTPHeaderField:@"Authorization"];

NSURLConnection *conn=[[NSURLConnection alloc] initWithRequest:request delegate:self];


-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
   [self.receivedData appendData:data];
}


- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
   if ([self.receivedData length] >0)
      NSString *result = [[NSString alloc] initWithData:downloadedData encoding:NSUTF8StringEncoding];
      NSLog(@"The HTML String Is : %@", result);

{
于 2013-03-31T15:19:05.737 回答