NSURLSession

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参考サイト

http://qiita.com/aKentaKoyama/items/96a979ab3a140e7b39ec

NSURLSession
 
 
Q