如何创建可用的URL来打开文档?

时间:2013-10-09 19:09:43

标签: c# ios url pdf xamarin.ios

一般问题:我有一些代码需要一个PDF文件的URL。它似乎适用于我在网上找到的网址,但不适用于我自己创建的网址。

例如,当我使用Xamarin中的随机网址时,它可以正常工作,但当我尝试从DropBoxAmazon Cloud Drive生成网址时,它无效。

示例网址

这些链接打开无害的PDF文件。请试一试:

如您所见,在浏览器中(我使用Chrome进行测试)您将打开PDF文档,但不能没有某种上下文(除了Xamarin之外)。

代码:我正在MonoTouch开发,我正在使用名为mTouch PDF Reader的组件。代码很简单:

var documentViewController = new DocumentViewController (1, "Some name here", "http://someurlhere.pdf");
ActivateController (documentViewController);

这会在我的应用程序中打开一个漂亮的PDF阅读器,但是,由于我无法使用自己创建的URL,这对我没有帮助。这是第三方库,所以我无法查看代码。顺便说一句,当我使用我的一个URL时,代码会崩溃并带有System.NullReferenceException这个堆栈跟踪:

MonoTouch.Foundation.NSArray.FromNativeObjects (items={MonoTouch.UIKit.UIViewController[1]}, count=1) in /Developer/MonoTouch/Source/monotouch/src/shared/Foundation/NSArray.cs:109
MonoTouch.Foundation.NSArray.FromNativeObjects (items={MonoTouch.UIKit.UIViewController[1]}) in /Developer/MonoTouch/Source/monotouch/src/shared/Foundation/NSArray.cs:96
MonoTouch.Foundation.NSArray.FromNSObjects (items={MonoTouch.UIKit.UIViewController[1]}) in /Developer/MonoTouch/Source/monotouch/src/shared/Foundation/NSArray.cs:48
MonoTouch.UIKit.UIPageViewController.SetViewControllers (viewControllers={MonoTouch.UIKit.UIViewController[1]}, direction=MonoTouch.UIKit.UIPageViewControllerNavigationDirection.Forward, animated=false, completionHandler={MonoTouch.UIKit.UICompletionHandler}) in /Developer/MonoTouch/Source/monotouch/src/UIKit/UIPageViewController.g.cs:144
mTouchPDFReader.Library.Views.Core.DocumentViewController.ViewDidLoad () in 
MonoTouch.UIKit.UIApplication.UIApplicationMain () in 
MonoTouch.UIKit.UIApplication.Main (args={string[0]}, principalClassName=(null), delegateClassName="AppDelegate") in /Developer/MonoTouch/Source/monotouch/src/UIKit/UIApplication.cs:38
Exam936.Application.Main (args={string[0]}) in /Users/EdGriMac/Dropbox/Quiz/Code/Exam926/Exam936/Main.cs:16

沮丧: 是否有一种特定的方法来创建以这种方式工作的URL?它确实看起来像DropBox做了一些不同的事情,因为它有点iFrames文档或其他东西。我不知道Amazon Cloud Drive的功能。 Xamarin做了什么?是否正如评论中所指出的那样,因为http vs https

我完全迷失了。我错过了一些简单的事吗?您还有其他方法可以创建建议的URL吗?谷歌搜索这是非常困难的,因为我继续点击如何在DropBox中共享URL的示例等等...

顺便说一句,我不希望将文档作为应用程序的一部分,因为这意味着我必须创建一个新版本的应用程序才能更改文档中的内容。

更新1:我在上面添加了链接。我稍后会尝试其他一些建议,并会留下更多更新。提前感谢任何进一步的建议!

更新2:我已使用Fiddler查看每个网址的响应。 Xamarin URL有Content-Type: application/pdf,而DropBox和Amazon Cloud Drive都有Content-Type: text/html; charset=UTF-8。这解释了很多。我将在今天晚些时候尝试andersr的建议,因为我有一个Web服务器来放置文件。

更新3 当我将PDF文件放在我的Amazon EC2服务器上时,在我的IIS网站下创建了一个虚拟目录,我的网站的URL +虚拟目录+文件名工作了!结果Content-Type application/pdf必须mTouch PDF Reader才能通过网址打开它。

感谢大家的帮助!

1 个答案:

答案 0 :(得分:1)

在我看来,前两个URL,直接链接到PDF文件,但后一个,即。 Amazon Cloud Drive上的链接链接到再次链接到PDF的页面。我建议以下可能的解决方案:

  1. 找到一种可靠的方法来将直接网址提取到云端硬盘上的文档中。该文档的链接不是您提供的链接,但是:link。也许亚马逊有关于如何避免html界面以便检索文件的文档。我根本不熟悉云端驱动器。 请注意,所提供的网址附加了一些限时令牌。
  2. 在您可以控制的基础架构上托管文档。 IE浏览器。设置您自己的Web服务器并在那里托管文档。或者使用另一个云存储提供程序,它使您能够直接链接到文件。