인증을위한 자격 증명을 요구하는 사이트에서 docx, pdf, image, pptx 또는 파일을 다운로드하는 방법 자격 증명을 통과했지만 여전히 시도했습니다. nsdata의 데이터는 다른 것이지만 로컬에 생성 된 파일을 억지로 저장할 수 있기 때문에 모든 종류의 파일을 다운로드 할 수 있습니다. 다음과 같이docx, pdf, image, pptx 또는 인터넷에서 파일을 다운로드하는 방법
코드입니다 : 다른 파일 DownloadingFile.h
#import "MyAppDelegate.h"
@interface DownloadingFile : NSObject
{
NSMutableData *webData;
NSMutableString *soapResults;
NSURLConnection *conn;
BOOL *elementFound;
BOOL isDoneParsing;
MyAppDelegate *mydelegate;
NSString *userCd,*passWord,*siteUrl;
}
@property (nonatomic ,retain) MyAppDelegate *mydelegate;
-(void)buttonClicked;
-(bool)getIsDone;
@end
DownloadingFile.m
#import "DownloadingFile.h"
#import "iExploreAppDelegate.h"
@implementation DownloadingFile
@synthesize mydelegate;
- (void)buttonClicked
{
mydelegate=(MyAppDelegate *)[[UIApplication sharedApplication] delegate];
userCd=[[NSString alloc] initWithString:[mydelegate getUserId]];
passWord=[[NSString alloc] initWithString:[mydelegate getPassword]];
NSLog(@"In Downloading; ");
NSURL *url =[NSURL URLWithString:[@"http://abcdef.xyz.com/Docs/NewFolder/myFile.docx" stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSMutableURLRequest *req = [NSMutableURLRequest requestWithURL:url];
[req setValue:[NSString stringWithFormat:@"bytes=%ld-",0] forHTTPHeaderField:@"Range"];
[req addValue: @"docx" forHTTPHeaderField:@"Content-Type"];
[req setHTTPMethod:@"POST"];
//---set the headers---
conn = [[NSURLConnection alloc] initWithRequest:req delegate:self startImmediately:YES];
if (conn) {
NSLog(@"connection done ");
webData = [[NSMutableData data] init];
}
}
-(void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge {
if([challenge previousFailureCount] == 0) {
NSURLCredential *newCredential;
newCredential=[NSURLCredential credentialWithUser:userCd password:passWord persistence:NSURLCredentialPersistenceNone];
NSLog(@"Crediantials done ");
[[challenge sender] useCredential:newCredential forAuthenticationChallenge:challenge];
} else {
[[challenge sender] cancelAuthenticationChallenge:challenge];
NSError* error = [NSError errorWithDomain:@"SoapRequest" code:403 userInfo: [NSDictionary dictionaryWithObjectsAndKeys: @"Could not authenticate this request", NSLocalizedDescriptionKey,nil]];
NSLog(@"Credentials are not valid");
[mydelegate loginFailled:false];
}
}
-(void) connection:(NSURLConnection *) connection
didReceiveResponse:(NSURLResponse *) response {
//[webData setLength: 0];
}
-(void) connection:(NSURLConnection *) connection
didReceiveData:(NSData *) data {
NSLog(@"recevied data %@",data);
webData=[NSMutableData dataWithData:data];
[webData appendData:data];
}
-(void) connection:(NSURLConnection *) connection
didFailWithError:(NSError *) error {
[webData release];
[connection release];
}
-(void) connectionDidFinishLoading:(NSURLConnection *) connection {
NSLog(@"Did Finish Loading done ");
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *pdfPath = [documentsDirectory stringByAppendingPathComponent:@"FileName.docx"];
[webData writeToFile:pdfPath atomically:YES];
[connection release];
}
감사합니다. 그것은 나를 위해 훌륭합니다! –