我想下载一个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)。有什么想法尽可能简单地解决这个问题? (我在这个领域是个专业人士,你可以看到......)
答案 0 :(得分:0)
您可以使用NSURLConnection类广告NSMutableURLRequest执行此操作。我们的想法是让NSMutableURLRequest知道您要使用哪种auth方法,以及凭据(登录/密码)。 以下代码应该这样做。 (您将需要此链接中的base64Encoding的NSdata类别http://cocoadev.com/wiki/BaseSixtyFour)
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);
{