UIWebView
認証が必要なWebサーバーからファイル(PDF、Word、Excel)をダウンロードするものがあります。これを行うためにNSMutableData
、Appleの推奨事項に従って、認証を処理し、オブジェクトにデータを入力しました。
データをロードするときにUIWebView
、Mime Typeをハードコーディングしたくないのですが、これを回避する方法について何かアイデアはありますか?
[_webView loadData:data MimeType: @"application/msword" textEncodingName: @"UTF-8" baseURL:[NSURL URLWithString: @""]];
以下を試しましたが、常に「text/html」が返されます。
- (void)connection:(NSURLConnection *)connection didRecieveResponse:(NSURLResponse *)response {
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response;
NSString *mimeType = [httpResponse MIMEType];
NSLog(@"MIMETYPE: %@",mimeType);
}
応答ヘッダーは次のとおりです。
HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Length: 50176
Content-Type: application/msword
Expires: -1
Server: Microsoft-IIS/7.5
Content-Disposition: attachment; filename=test.doc
X-AspNet-Version: 4.0.30319
Persistent-Auth: true
X-Powered-By: ASP.NET
編集: ヘッダーで何か奇妙なことが起こっています。
私が最初に投稿したヘッダーはChromeとFiddler2で検証されましたが、NSURLConnectionは実際に次のものを受信しています。
"Content-Type" = "text / html; charset = us-ascii、application / msword";
"Content-Length" = "341、79360";
以下のスニペットは、これを確認するために使用されました。
- (void)connection:(NSURLConnection *)connection didRecieveResponse:(NSURLResponse *)response {
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse*)response;
if ([response respondsToSelector:@selector(allHeaderFields)]) {
NSDictionary *dictionary = [httpResponse allHeaderFields];
NSLog([dictionary description]);
}
}
なぜこの無効なヘッダーを受け取っているのか、私は困惑していますか?