我想从需要用户并通过的网页下载文件,但首先我必须获取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()
答案 0 :(得分:2)
HttpClient是处理cookie和访问经过身份验证的URL的良好框架。
或者,您可以使用核心Java组件,例如Authenticator,URL和BufferedReader,如下所示:
创建一个自定义身份验证器,它将从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());
}
}
将自定义身份验证器HTTPAuthenticator
设置为默认身份验证器。
Authenticator.setDefault(new HTTPAuthenticator());
完成后,阅读文件并写入本地驱动器,如下所示:
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();
希望这有帮助。