2012-10-14 74 views
2

我想從需要用戶和網頁的網頁下載文件,但首先必須獲取cookie。我想要做的是在這個Python腳本中完全描述,但我想用Java來完成。用Java中的cookie登錄網頁

我一直在閱讀,我發現httpclient庫。 httpclient是我需要的嗎?任何等效的庫在mechanize和urllib2在Java?

在此先感謝。

#!/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

你的問題都是關於閱讀cookies的嗎?或者您是否在尋找在外部網絡上登錄並下載文件的方法? –

+0

如何登錄外部網絡並下載文件。我的問題是,如果我必須使用httpclient,或者如果你知道一些更適合我的目標的東西。 –

回答

2

HttpClient是與餅乾處理和訪問驗證URL一個良好的框架。

或者您可以使用Java核心部件如AuthenticatorURLBufferedReader如下:

  1. 創建一個自定義的驗證器將從該cookie

    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. 設置自定義閱讀userId/Password身份驗證器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(); 
    

希望這有助於。