向Web站點(diǎn)發(fā)送GET請(qǐng)求是很容易的。比如,創(chuàng)建一個(gè)URL對(duì)象http://www.sun.com/somepage.jsp?key=
value,而不是http://www.sun.com/somepage.jsp。然而如果你需要發(fā)送一個(gè)POST請(qǐng)求時(shí)又該怎樣做呢?
向一個(gè)Web站點(diǎn)發(fā)送POST請(qǐng)求只需要簡(jiǎn)單的幾步。首先要和URL下的URLConnection對(duì)話(huà)。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通常作為輸入來(lái)使用,比如下載一個(gè)Web頁(yè)。通過(guò)把URLConnection設(shè)為輸出,你可以把數(shù)據(jù)向你個(gè)Web頁(yè)傳送。下面是如何做:
...
connection.setDoOutput(true);
最后,為了得到OutputStream,簡(jiǎn)單起見(jiàn),把它約束在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ā)送一個(gè)看起來(lái)象這樣的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,這使得它看起來(lái)不那么龐大。使用上面列出的大致的代碼,Java代碼可以和這些站點(diǎn)輕松的實(shí)現(xiàn)對(duì)話(huà)。
posted on 2005-06-24 11:32
小米 閱讀(530)
評(píng)論(0) 編輯 收藏 所屬分類(lèi):
Java