NSURLSessionを使用してWKWebViewにてダウンロードリンクをクリックしたときの
ダウンロード機能を実装していますが、ダウンロードがうまくいかないときがあります。
下記コードについてダウンロードを成功させるための解決方法を教えてください。
ダウンロード成功時のurlString:http://172.27.32.xxx/test.txt
ダウンロード失敗時のurlString:http://172.27.32.175/?template=MessageFileRawScreen&entityid=58081&attachmentIndex=3381&f=test.txt
※上記についてはどちらもsafari(標準ブラウザ)からのアクセスでダウンロード(共有)できることの確認をしています。
NSURL *downloadURL = [NSURL URLWithString:urlString];
NSMutableURLRequest *request =[NSMutableURLRequest requestWithURL:downloadURL];
NSArray *cookies =[[NSHTTPCookieStorage sharedHTTPCookieStorage]cookiesForURL:downloadURL];
NSDictionary *header = [NSHTTPCookie requestHeaderFieldsWithCookies:cookies];
[request setAllHTTPHeaderFields:header];
NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
[cookieStorage.cookies enumerateObjectsUsingBlock:^(NSHTTPCookie *cookie, NSUInteger idx, BOOL *stop) {
NSLog(@"cookie properties: %@", cookie.properties);
}];
self.downloadTask = [self.session downloadTaskWithRequest:request];
[self.downloadTask resume];
下記コードのNSDataでダウンロードしたファイルが0byteとなりダウンロードに失敗する。
- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)downloadURL
{
NSData* data = [NSData dataWithContentsOfURL:downloadURL];
}
※ 別情報
ダウンロード失敗時のダウンロードリンククリック時の動作をsafariと自作アプリについて
wiresharkにてLANモニタを取得したところ、HTTPのGET要求のヘッダ部分のCookie情報に差分がありました。
safari:cookie pairにJSESSIONIDがのっている。
自作アプリ:cookie pairにJSESSIONIDがない。
cookieの差分でダウンロードできないということがあるのでしょうか?
※ダウンロードを実現するにあたり参考にしたサイトは下記です。
NSURLSession参考サイト