2012-01-07 13 views
0

私は、フォームとWebページをダウンロードしたい、私はこのように、このフォームを記入し、それを提出してから戻りページを取得する必要があります:私はテキストを記入するとフォームを送信してWebページをダウンロードする方法は?

の領域では、テキスト領域にいくつかの単語が表示されます。しかし、私のコードは、この機能を完了することはできません、次は私のコードです:

import java.io.BufferedReader; 
import java.io.DataOutputStream; 
import java.io.InputStreamReader; 
import java.net.HttpURLConnection; 
import java.net.URL; 
import java.net.URLEncoder; 
import java.util.HashMap; 
import java.util.Iterator; 
import java.util.Map; 
import java.util.Set; 

public class DownForm { 
    public static void doSubmit(String url, Map<String, String> data) throws Exception { 
     URL siteUrl = new URL(url); 
     HttpURLConnection conn = (HttpURLConnection) siteUrl.openConnection(); 
     conn.setRequestMethod("POST"); 
     conn.setDoOutput(true); 
     conn.setDoInput(true); 
     DataOutputStream out = new DataOutputStream(conn.getOutputStream()); 
     Set keys = data.keySet(); 
     Iterator keyIter = keys.iterator(); 
     String content = ""; 
     for(int i=0; keyIter.hasNext(); i++) { 
      Object key = keyIter.next(); 
      if(i!=0) { 
       content += "&"; 
      } 
      content += key + "=" + URLEncoder.encode(data.get(key), "UTF-8"); 
     } 
     System.out.println(content); 
     out.writeBytes(content); 
     out.flush(); 
     out.close(); 
     BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream())); 
     String line = ""; 
     while((line=in.readLine())!=null) { 
      System.out.println(line); 
     } 
     in.close(); 
    } 

    public static void main(String args[]){ 
    Map<String, String> data = new HashMap<String, String>(); 
    data.put("meshDataForm", "Pain and incapacity"); 
    try { 
     doSubmit("http://www.ebi.ac.uk/Rebholz-srv/MeshUP/", data); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
} 

答えて

1

私はあなたがDataOutputStreamを使用する必要があるとは思いません。出力ストリームを直接使用してください。

Btwの場合は、apache http componentsまたはおそらくHtmlUnitを使用する方がはるかに簡単です。

+0

ご協力いただきありがとうございます、私は今すぐ修正しました! – tianchengbo

関連する問題