3

ユーザーとパスが必要な Web ページからファイルをダウンロードしたいのですが、最初に 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()
4

1 に答える 1

3

HttpClientは、Cookie を処理し、認証済み URL にアクセスするための優れたフレームワークです。

または、以下のように、 AuthenticatorURLBufferedReaderなどのコア Java コンポーネントを使用できます。

  1. userId/PasswordCookie から読み取るカスタム Authenticator を作成します。

    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();
    

お役に立てれば。

于 2012-10-14T06:14:03.140 に答える