使用Java在cookie中登录网页

时间:2012-10-14 05:34:13

标签: java cookies httpclient

我想从需要用户并通过的网页下载文件,但首先我必须获取cookie。我想要做的是在这个Python脚本中完全描述,但我想用Java做。

我一直在阅读,我找到了httpclient库。我只需要httpclient吗?在java中使用mechanize和urllib2的任何等效库吗?

提前致谢。

#!/usr/bin/python

import mechanize, urllib2
from urllib import urlopen, urlencode 

user = 'username'
password = 'password'
output_file = 'name.pdf'

web = "https://..."
bills_page = "https://.../bills"
login_web = "https://.../login/"
file = "https://.../file_I_want"

br = mechanize.Browser()
br.open(web)

data = {
    'user_username': user,
    'user_password': password,
    'idClientehidden': '',
    'answer': ''
}

response1 = urllib2.Request(login_web, urlencode(data))

br.open(response1)
br.open(bills_page)
html_bills = br.response().read()

br.open(file)
pdf_bill = open(output_file, 'w')
pdf_bill.write(br.response().read())
pdf_bill.close()

1 个答案:

答案 0 :(得分:2)

HttpClient是处理cookie和访问经过身份验证的URL的良好框架。

或者,您可以使用核心Java组件,例如AuthenticatorURLBufferedReader,如下所示:

  1. 创建一个自定义身份验证器,它将从Cookie

    中读取userId/Password
    public class HTTPAuthenticator extends Authenticator {
    
      protected PasswordAuthentication getPasswordAuthentication() {
         String username = "user"; //<--read from cookie
         String password = "password"; //<--read from cookie
         return new PasswordAuthentication(username, password.toCharArray());
      }
    }
    
  2. 将自定义身份验证器HTTPAuthenticator设置为默认身份验证器。

    Authenticator.setDefault(new HTTPAuthenticator());
    
  3. 完成后,阅读文件并写入本地驱动器,如下所示:

    URL url = new URL("http://secureweb/secure.html");
    BufferedReader br= new BufferedReader(new InputStreamReader(url.openStream()));
    File file = new File("myLocalFile");
    BufferedWriter bw = new BufferedWriter (file);
    String lineStr;
    while ((str = br.readLine()) != null) {
         bw.write();
    }
    bw.close();
    br.close();
    
  4. 希望这有帮助。