如何将参数传递给fileURL

时间:2011-11-27 14:01:58

标签: iphone ios nsurl

我正试图以通常的方式在文件路径的NSURL中传递参数:

(fileURL)?arg1=val1&arg2=val2

问题是我不断从UIWebView

收到以下错误
Failed to load webpage with error: The requested URL was not found on this server.

当我删除参数后缀时,一切都很完美。关于Apple的文档说明了该方法

+(id)fileURLWithPath:(NSString *)path

像这样:"path: The path that the NSURL object will represent. path should be a valid system path..."

是否可以将参数添加到fileURL?如果是这样,我该怎么做?

顺便说一句,如果我尝试使用带有Javascript调用的UIWebView中的参数加载本地URL文件,我就成功了:

document.location = url;

我尝试从本机代码中找到解决方案......

2 个答案:

答案 0 :(得分:3)

好的,我看到了你的问题。您无法将?arg1=something&arg2=...添加到路径中,因为可能存在名称相同的文件,因此NSURL会转义?字符以确保它用作路径,而不是查询字符串的一部分( ?之后的任何内容都被称为URL中的查询。

要正确执行此操作,您需要通过提供正确转义的字符串来设置网址。

NSString *path = @"/Users/mike/file.html"; 
NSString *query = @"option1=5&option2=hello"; // for example

NSString *encodedPath = [path stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"file://%@?%@",
                                   encodedPath,
                                   query]];

答案 1 :(得分:0)

您是否尝试过使用该片段?它是#符号后面的URL的一部分。这部分永远不会发送到服务器,因此不应该干扰路径,但页面上的javascript仍然可以读取它。