【问题标题】:read pdf file from server从服务器读取pdf文件
【发布时间】:2013-12-08 21:56:48
【问题描述】:

我正在尝试开发可以从服务器查看 pdf 文件的 android 应用程序。 我已经编辑了我的代码。看看吧。

代码如下:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

                //String LinkToPDF = "http://127.0.0.1/joomla/images/appletter.pdf";
                WebView mWebView=new WebView(MainActivity.this);
                mWebView.getSettings().setJavaScriptEnabled(true);
                mWebView.getSettings().setPluginsEnabled(true);
                mWebView.loadUrl("https://docs.google.com/gview?embedded=true&url=nizam.hostingsiteforfree.com/do‌​c_8.pdf");
                setContentView(mWebView);

            mWebView.setWebViewClient(new WebViewClient() {
                    public boolean shouldOverrideUrlLoading(WebView view, String url) {
                        view.loadUrl(url);
                        return false;
                    }
                });
              }

这没有错误。但是每当我点击“阅读pdf”按钮时它就会显示这个

“抱歉,我们无法在原始来源中找到该文档。请验证该文档是否仍然存在。”

请帮我解决这个问题。有什么帮助吗?

【问题讨论】:

  • 我尝试使用本地主机。它不起作用。

标签: java android eclipse pdf-generation


【解决方案1】:

从模拟器中引用 localhost 时,请使用 http://10.0.2.2/ 而不是您的本地 IP。
所以你的代码的变化将是

String LinkToPDF = "http://10.0.2.2/joomla/images/appletter.pdf";

此外,这仅适用于模拟器。真实设备,需要真实服务器。

更新:
我测试了你的代码。它仅适用于真实服务器。似乎“谷歌文档”无法访问本地主机文件。因此,使用真实服务器进行测试。有许多免费托管网站可供您用于测试目的。

Joomla 不是服务器。 Joomla 是content management system (CMS)。您在您的“本地主机”中安装了 Joomla,这只是一个模仿服务器,而不是真正的服务器。(免费托管站点之一-freeHosting)。在真实服务器上注册(现在可以使用免费托管),获取您自己的 url,然后将 pdf 上传到那里。如果您需要有关托管的更多详细信息,请随时给我发邮件。

现在,一个重要的部分:- SSL 证书。免费主机可能没有有效的 SSL。所以,参考如下:

    String LinkToPDF = "http://nizam.hostingsiteforfree.com/doc_8.pdf";
    WebView webview=new WebView(MainActivity.this);
    webview.getSettings().setJavaScriptEnabled(true);

    final Activity activity = this;
    webview.setWebViewClient(new WebViewClient() {
      public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
        Toast.makeText(activity, "Oh no! " + description, Toast.LENGTH_SHORT).show();
      }
      @Override
        public void onReceivedSslError(WebView view,
                SslErrorHandler handler, SslError error) {
            Log.d("Nzm", ""+error.getPrimaryError());
             Toast.makeText(activity, "Skipping SSL error", Toast.LENGTH_SHORT).show();
            handler.proceed();
        }
    });

    setContentView(webview);
    webview.loadUrl("https://docs.google.com/gview?embedded=true&url=nizam.hostingsiteforfree.com/doc_8.pdf");

【讨论】:

  • 我尝试了 10.0.2.2 但仍然无法正常工作。我还尝试将其直接打开到 pdf url,而不是重定向到谷歌文档,但这些都不起作用。我的清单中也有互联网许可。请帮帮我。
  • 我现在真的需要这样做。你能帮我找到解决办法吗?
  • 你明白了吗?您可以使用以下方式对其进行测试:https://docs.google.com/gview?embedded=true&url=nizam.hostingsiteforfree.com/doc_8.pdf
  • 好的。我有 joomla 网络服务器。我已经登录到该 Web 服务器并上传了文件。我如何从 joomla 中获取它?那是我们选择的网络服务器。
  • 那么,你的文件的 url 变成了什么?