0

最初のステップ (ログイン ページ) をテストしましたが、動作します。すべてのパラメーター (ユーザー、パスなど) を入力すると、結果 (データを含むページ) を印刷できます。問題は、その Web からファイルをダウンロードしようとしたときです。最初のステップから Cookie が必要です。ダウンロードしたファイルには、「期限切れのセッション」というメッセージがあります。これは私のコードです:

URL login = new URL("..."); 
URL download_page = new URL("..."); 
URL document_link new URL("..."); 


//String for request
String data_post = "username=name&password=1234&other_data=..."; 

//Login page
HttpURLConnection conn = (HttpURLConnection)login.openConnection(); 
conn.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream()); 
wr.write(data_post); 
wr.close(); 
conn.connect(); 

//Download page
HttpURLConnection connDownload = (HttpURLConnection)download_page.openConnection(); 
connDownload.connect(); 

//Link to the file 
HttpURLConnection connFile = (HttpURLConnection)document_link.openConnection(); 
connFile.connect(); 

BufferedInputStream in = new BufferedInputStream(connFile.getInputStream()); 

File saveFile = new File("myfile.txt"); 
OutputStream out = new BufferedOutputStream(new FileOutputStream(saveFile)); 
byte[] buf = new byte[256]; 
int n = 0; 
while ((n=in.read(buf))>=0) { 
   out.write(buf, 0, n); 
} 
out.flush(); 
out.close();  

前もって感謝します。

4

1 に答える 1

0

接続を閉じる前に、最初のページで Cookie のヘッダーを確認しようとしましたか? 私は次のようなものを試してみます:

String cookies = conn.getHeaderField("Set-Cookie");

次に、以下を使用して、connect() を実行する前に、次の接続で Cookie を設定します。

connDownload.setRequestProperty("Cookie", cookies);

...それが機能するかどうかを確認してください...

于 2013-10-24T04:17:30.830 に答える