Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UIWebView-加载自定义内容类型的url_Ios_Uiwebview - Fatal编程技术网

Ios UIWebView-加载自定义内容类型的url

Ios UIWebView-加载自定义内容类型的url,ios,uiwebview,Ios,Uiwebview,在我的应用程序中,我使用一个web视图(一个简单的UIWebView)来显示一个列出一些文件的网页。 出于某种原因,服务器(不在我的控制范围内)想要强制用户下载文件,据我所知,它通过两种方式来实现—(a)设置内容配置:附件;在标题中,以及(b)将内容类型更改为内容类型:application/x-forcedownload 当尝试在web视图中打开其中一个文件时,web视图将显示已知的“帧加载中断”错误,如果在手机的本机Safari应用程序中访问同一页面并单击其中一个文件,它将显示另一个错误,即

在我的应用程序中,我使用一个web视图(一个简单的UIWebView)来显示一个列出一些文件的网页。 出于某种原因,服务器(不在我的控制范围内)想要强制用户下载文件,据我所知,它通过两种方式来实现—(a)设置内容配置:附件;在标题中,以及(b)将内容类型更改为内容类型:application/x-forcedownload

当尝试在web视图中打开其中一个文件时,web视图将显示已知的“帧加载中断”错误,如果在手机的本机Safari应用程序中访问同一页面并单击其中一个文件,它将显示另一个错误,即“下载失败-Safari无法下载此文件”

在我看来,这些错误的原因是内容类型发生了更改,尽管该文件是一个常规的、简单的PDF文件

因此,如果我能告诉我的web视图正确的内容类型(甚至忽略它,因为文件的扩展名是.pdf),我相信它会很高兴地显示文件

你知道怎样才能做到吗

非常感谢


Dan。

最终,我使用UIWebViewDelegate识别对此类文件的请求,在后台下载文件内容,并使用
[webView loadData:self.webdata MIMEType:@“application/pdf”textEncodingName:@“UTF-8”baseURL:nil]显示它。

这是执行此任务的代码(self.webdata是类的NSMutableData属性)

- (BOOL)webView:(UIWebView *)_webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {

    // If the link is about to use a weird Content-Type, stop the UIWebView request
    //    and get the data through a NSUrlConnection
    if ([request.URL.absoluteString hasSuffix:@"forcedownload=1"])
    {
        [NSURLConnection connectionWithRequest:request delegate:self];
        // Show an activity indicator
        [self showActivityIndicators];
        return NO;
    }

    return [super webView:_webView shouldStartLoadWithRequest:request navigationType:navigationType];
}

- (void) connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{
    self.webdata = [[NSMutableData alloc] init];
}

- (void) connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
    [self.webdata appendData:data];
}

- (void) connectionDidFinishLoading:(NSURLConnection *)connection{
    [self hideActivityIndicators];

    // Loads an empty URL to give the user the "Back" button ability
    [webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"about:blank"]]];
    // Load the content
    [webView loadData:self.webdata MIMEType:@"application/pdf" textEncodingName:@"UTF-8" baseURL:nil];
}