向Web站點(diǎn)發(fā)送GET請求是很容易的。比如,創(chuàng)建一個URL對象http://www.sun.com/somepage.jsp?key=value,而不是http://www.sun.com/somepage.jsp。然而如果你需要發(fā)送一個POST請求時又該怎樣做呢?
向一個Web站點(diǎn)發(fā)送POST請求只需要簡單的幾步。首先要和URL下的URLConnection對話。URLConnection可以很容易的從URL得到。比如:
// Using java.net.URL and
//java.net.URLConnection
URL url = new
URL("http://jobsearch.dice.com/jobsearch/jobsearch.cgi");
URLConnection connection = url.openConnection();
然后把連接設(shè)為輸出模式。URLConnection通常作為輸入來使用,比如下載一個Web頁。通過把URLConnection設(shè)為輸出,你可以把數(shù)據(jù)向你個Web頁傳送。下面是如何做:
...
connection.setDoOutput(true);
最后,為了得到OutputStream,簡單起見,把它約束在Writer并且放入POST信息中,例如:
...
OutputStreamWriter out = new
OutputStreamWriter(uc.getOutputStream(), "8859_1");
out.write("username=bob&password="+password+"");
// remember to clean up
out.flush();
out.close();
這樣就可以發(fā)送一個看起來象這樣的POST:
POST /jobsearch/jobsearch.cgi HTTP 1.0
ACCEPT: text/plain
Content-type: application/x-www-form-urlencoded
Content-length: 99
username=bob
password=someword
一旦發(fā)送成功,用以下方法就可以得到服務(wù)器的回應(yīng):
connection.getInputStream();
一些Web站點(diǎn)用POST形式而不是GET,這是因?yàn)镻OST能夠攜帶更多的數(shù)據(jù),而且不用URL,這使得它看起來不那么龐大。使用上面列出的大致的代碼,Java代碼可以和這些站點(diǎn)輕松的實(shí)現(xiàn)對話。