从受保护的网页下载PDF文件

时间:2015-08-11 16:24:21

标签: java html pdf login httpurlconnection

所以我现在已经尝试了几天,而且自从项目明天到期以来,我真的没有时间了。我想知道是否有人可以帮我解决这个问题。我试图从此链接下载PDF文件,该链接是指向PDF内容网页的链接。我尝试过使用Jsoup,但Jsoup在以PDF格式编写时不支持网页。这是我一直试图使用的代码:

public Booolean ConfirmRWArgs(int count, List<Type> types)
{
    if(ReadWriteArgs != null && ReadWriteArgs.Count == count)
    {
        if(ReadWriteArgs.Count == types.Count)
        {
            for (int i = 0; i < ReadWriteArgs.Count; i++)
            {
                // Compare the types of the objects in the list ReadWriteArgs
                // to the Types lists in the list types
                //if(ReadWriteArgs[i] is types[i])
                //if(typeof(ReadWriteArgs[i])) == types[i])
            }
            return true;
        }
    }
    return false;
}

此代码的问题在于它会自动将您重定向到您必须输入用户名和密码的登录页面。因此,我必须找到一种方法来登录我的帐户并连接到页面而不使用Jsoup(如前所述,这是无法读取PDF内容)。如果有人可以更改此代码,以便我可以登录并随后通过查看此登录页面的html并调整代码来下载pdf。我会永远感激。谢谢!

1 个答案:

答案 0 :(得分:0)

HtmlUnit就是我用来做这样的事情,特别是在速度不重要时。

这是我的另一个答案中的一段随机的伪代码:

WebClient wc = new WebClient(BrowserVersion.CHROME);

HtmlPage p = wc.getPage(url)

((HtmlTextInput) p.getElementById(userNameId)).setText(userName);
((HtmlTextInput) p.getElementById(passId)).setText(pass);

p = ((HtmlElement) p.getElementById(submitBtnId)).click();

// Just as an example for something I've had to do, I use
// UnexpectedPage when the "content-type" is "application/zip"
UnexpectedPage up = ((HtmlElement) p.getElementById(downloadBtn)).click();

InputStream in = up.getInputStream();

...

使用another library阅读pdf