一般问题:我有一些代码需要一个PDF文件的URL。它似乎适用于我在网上找到的网址,但不适用于我自己创建的网址。
例如,当我使用Xamarin中的随机网址时,它可以正常工作,但当我尝试从DropBox或Amazon 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
才能通过网址打开它。
感谢大家的帮助!
答案 0 :(得分:1)
在我看来,前两个URL,直接链接到PDF文件,但后一个,即。 Amazon Cloud Drive上的链接链接到再次链接到PDF的页面。我建议以下可能的解决方案: