我正在开发一个播放广播电台的应用程序。广播电台的链接存储在服务器上,并通过后端解决方案添加。
广播电台的所有信息,例如:名称、频率,当然还有流链接,都由后端生成并存储在 XML 文件中。这是我的第一个项目,所以我不清楚如何下载该文件,该文件存储在受密码保护的目录中。
我必须通过 sftp 或 https 下载它吗?有人知道如何执行此任务吗?
任何帮助将不胜感激。
先感谢您。
花岗岩
您可以使用NSURLConnection ,这是一个很好的实现。做您想做的事,简单明了
NSData *responseData = [NSData dataWithContentsOfURL:url];
这是异步发生的,即非阻塞调用
dispatch_async(queue, ^{
NSData *responseData = [NSData dataWithContentsOfURL:url];
dispatch_sync(dispatch_get_main_queue(), ^{
// handle your responesData here.
//convert data to nsstring or something then use a parser to parse details.
});
});
在此处查找XML 解析
对于基本身份验证,试试这个
NSURL *URL = [NSURL URLWithString:url];
NSURLRequest *request = [NSURLRequest requestWithURL:URL
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:30.0];
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
[connection start];
[connection release];
// NSURLConnection Delegates
- (void)connection:(NSURLConnection *)connection willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
{ if ([challenge previousFailureCount] == 0) {
NSLog(@"received authentication challenge");
NSURLCredential *newCredential = [NSURLCredential credentialWithUser:@"USER"
password:@"PASSWORD"
persistence:NSURLCredentialPersistenceForSession];
NSLog(@"credential created");
[[challenge sender] useCredential:newCredential forAuthenticationChallenge:challenge];
NSLog(@"responded to authentication challenge");
}
else {
NSLog(@"previous authentication failure");
}
}
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
...
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
...
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
...
}
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
...
}
在 willSendRequestForAuthenticationChallenge 方法中提供您的凭据,或者如果您想要更好的实现,请参阅this,它是一个同步的 NSURLConnection 子类 imp,它也处理身份验证。