monotouch uiwebview 找不到本地 html
Posted
技术标签:
【中文标题】monotouch uiwebview 找不到本地 html【英文标题】:monotouch uiwebview cannot find local html 【发布时间】:2012-12-05 15:32:24 【问题描述】:我正在 Monotouch 上构建一个 iPhone 应用程序。我的部分项目使用本地网站内容。我将网站使用的所有 html、js、css 和图像复制到一个文件夹中,并将其导入到我的 monotouch 项目中。我已将所有这些文件的构建选项设置为 Content。
我加载本地网页内容如下:
this.url = Path.Combine (NSBundle.MainBundle.BundlePath, "Content/index.html"); webView.LoadRequest(new NSUrlRequest(new NSUrl(this.url, false)));
问题是当我运行项目时,它找不到我的本地网站,当我尝试调试时收到以下消息:
在此服务器上找不到请求的 URL。
/Users/*****/Library/Application Support/iPhone 模拟器/4.3/Applications/092E0D85-92F4-4F4E-9CD2-3FBBCD797F76/Project.app/Content/index.html
有趣的是,当我将链接复制到 safari 时,网页显示没有任何问题
我曾多次尝试清除和重建项目,但没有任何改变。
谁能帮我解决这个问题?
我正在使用 OS X Moutain Lion 10.8.2、MonoDevelop 3.0.5、Monotouch 6.0.6、xcode 4.5.2
提前致谢
【问题讨论】:
您真的在使用 MonoTouch 3.0.2 吗?那已经有几年的历史了,您不太可能再找到任何人使用它。当前(稳定)版本是 6.0.6,与 Snow Leopard 兼容的最新版本是 5.4(使用 Xcode 4.2)。 抱歉输入错误。我使用 MonoDevelop 3.0.5 和 5.x Monotouch。我正在将包括 OS X、xcode 和 Monotouch 在内的整个系统更新到最新的系统。希望它能解决问题。 我已将所有内容更新为最新版本,但这仍然是个问题。有人有这方面的经验吗? 我认为当我过去这样做时,我只是使用了与我的项目根目录相关的 url。所以试试“Content/index.html” 项目视图中的 index.html 是否实际上位于名为“Content”的文件夹中(区分大小写)。文件名“index.html”全小写吗? 【参考方案1】:这很奇怪,对我来说效果很好。
试试这个:
var fileName = "Content/index.html";
webView.LoadHtmlString (File.ReadAllText (fileName),
NSUrl.FromFilename (fileName));
【讨论】:
【参考方案2】:您可以使用 NSURLComponent ,如下所示。参数可以在 NSURLComponent Query 属性中传递。
string viewerPath = Path.Combine(NSBundle.MainBundle.BundlePath, string.Format("Content/pdfjs/web/0", _pdfViewerFileName));
string queryString = string.Format("file=0", _pdfFilePath);
NSUrlComponents components = new NSUrlComponents(viewerPath);
components.Query = queryString;
Control.LoadRequest(new NSUrlRequest(components.Url));
【讨论】:
【参考方案3】:感谢您的帮助。
我刚刚意识到我在链接中添加了参数,例如:index.html?p1=v1&p2=v2,它使链接不起作用。如果我删除这些参数,它的工作没有任何问题。
很抱歉错过了关于我的问题的信息。
现在,如果我不能像普通网站那样做,如何将参数传递给我的本地网站?
【讨论】:
如果您需要为您的问题添加其他信息,请编辑它。添加 cmets 作为答案令人困惑。 也就是说,当您在查询字符串上传递参数时,通常在服务器(php、ASP.NET、Rails 等)上有一些东西可以解释它们并用 HTML 响应。当您在应用程序中使用本地 HTML 页面时,它们只是纯 HTML,没有发生服务器端处理。 使用javascript,我们仍然可以解析GET方法的参数。我在某处读过说使用 jQuery 我们也可以获得 POST 的参数,但我还没有测试过。 MT 的问题是他们将参数视为文件名的一部分,因此他们找不到它。我已经通过从文件名中删除参数来解决我的问题,然后使用 MT 执行 javascript 函数来传递我的参数。感谢您的所有帮助。 我也有同样的问题,有解决办法吗? @jpintor 我通过在页面名称后添加正斜杠解决了这个问题,它工作得很好,例如; index.html/?p1=v1&p2=v2【参考方案4】:请务必将 htm 的 Build Action 设置为 BundleResource - 使用此设置的代码对我有用!
【讨论】:
以上是关于monotouch uiwebview 找不到本地 html的主要内容,如果未能解决你的问题,请参考以下文章
如何在 MonoTouch 中使用 System.IO.Packaging