HttpURLConnection CookieManager Post提交

来源:互联网 发布:食物热量计算器软件 编辑:程序博客网 时间:2024/05/01 22:40
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.CookieHandler;
import java.net.CookieManager;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;

public class Test {

    
public static void main(String[] args) {

        
try {
            String encoding 
= "UTF-8";
            
// Construct data
            String data = URLEncoder.encode("Email", encoding) + "="
                    
+ URLEncoder.encode("username", encoding);
            data 
+= "&" + URLEncoder.encode("Passwd", encoding) + "="
                    
+ URLEncoder.encode("password", encoding);

            
// Cookie handler
            CookieManager manager = new CookieManager();
            manager.setCookiePolicy(java.net.CookiePolicy.ACCEPT_ALL);
            CookieHandler.setDefault(manager);

            
// Send data
            URL url = new URL(
                    
"https://www.google.com/accounts/ServiceLoginAuth?service=mail");
            HttpURLConnection conn 
= (HttpURLConnection) url.openConnection();
            conn.setRequestProperty(
"user-agent",
                    
"mozilla/4.0 (compatible; msie 6.0; windows 2000)");
            conn.setDoInput(
true);
            conn.setDoOutput(
true);
            conn.setRequestMethod(
"POST");
            conn.setAllowUserInteraction(
true);
            conn.setUseCaches(
true);
            conn.getOutputStream().write(data.getBytes(encoding));
            conn.getOutputStream().flush();
            conn.getOutputStream().close();

            
// Get the response
            BufferedReader rd = new BufferedReader(new InputStreamReader(conn
                    .getInputStream(), encoding));
            BufferedWriter wt 
= new BufferedWriter(new OutputStreamWriter(
                    
new FileOutputStream("out.html")));
            String line;
            
while ((line = rd.readLine()) != null{
                wt.write(line);
                wt.write(
" ");
            }

            wt.close();
            rd.close();
            conn.disconnect();
        }
 catch (Exception e) {
            e.printStackTrace();
        }

    }

}
 
如果没有加入cookie handler的话,gmail就会说需要浏览器支持cookie。
需要注意的是:CookieManager和CookiePolicy类在jdk1.6中新加入的。
原创粉丝点击