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 では、思ったほど単純には機能しません。ここでは、Web サイトを 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 に答える