我正试图以通常的方式在文件路径的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;
我尝试从本机代码中找到解决方案......
答案 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仍然可以读取它。