2014-10-09 65 views
-2

我有一个NSData对象,我想在WebView中显示它。 WebView可以处理/显示NSData对象吗?将NSData加载到WebView中

NSData *data = ... // some data I've gotten from NSURLConnection 
WebView *webView = ... [[WebView alloc] init]; 
+0

什么是'NSData'描述一个.docx文件? UTF-8文本?一个PNG?还有别的吗? – Tommy 2014-10-09 02:59:16

+0

它是可变的。我允许用户输入一个URL,我将它下载到一个NSData对象中,然后我想根据请求的响应标题显示它。 – 2014-10-09 03:01:13

+0

除非您创建了自定义数据格式,否则“NSData”不再具有请求标头。它只是身体。直接将URL提供给视图。 – Tommy 2014-10-09 03:05:10

回答

0

没有Content-Type标头,Web视图无法知道如何解释数据。这就是添加Content-Type标头的原因。

如果由于某种原因想要捕获可随时重播的网络流量,请考虑编写自定义NSURLProtocol。如果你为http编写处理程序,那么它将覆盖内置函数;给它一个通透的记忆,它可以将这些请求重定向到真实的请求。

0

做这样的

NSString* newStr = [[NSString alloc] initWithData:theData encoding:NSUTF8StringEncoding]; 

[self.webView loadHTMLString: newStr baseURL:nil]; 
+0

我认为问题是数据可能不是HTML(并且可能不是UTF-8,但这不太可能)。 – Tommy 2014-10-09 03:32:49

2

是的! 正确提供MIME类型时,NSData由UIWebView处理。 这段代码加载一个网页视图

NSString *path = [urlFileInView path]; 
NSData *data = [[NSFileManager defaultManager] contentsAtPath:path]; 


webViewForDocsView.delegate = self; 
[webViewForDocsView loadData:data MIMEType:@"application/vnd.openxmlformats-officedocument.wordprocessingml.document" textEncodingName:@"UTF-8" baseURL:nil]; 
+0

对不起,我正在使用'WebView',而不是'UIWebView' – 2014-10-09 03:41:36