由於代碼與Java用apache的HttpClient發送Post請求大部份重複,因此就不貼整段代碼了,只把不一樣的地方貼出來。
發送Cookie就必須先獲得Cookie,因此至少發送兩次請求,第一次用於獲得Cookie,第二次在發送請求前加上Cookie
在第一次發送Post請求前,先創建一個DefaultHttpClient對象的引用,在上文中沒有創建引用,new了一個DefaultHttpClient對象後直接使用。既然要發送Cookie,必然先要獲得Cookie,要獲得cookie就須要DefaultHttpClient.在第一次發送請求後,就可使用DefaultHttpClient對象的getCookieStore(),獲得一個CookieStore對象,咱們用到的Cookie就存在這裏。仍是貼一下這幾句代碼:
上文37行做以下修改:php
第二次請求,把第一次請求的代碼再複製一次。固然,變量名會重複,改一下便可。如今要在發送請求以前加上剛纔獲得的cookie,仍是改上文的37行:html
© 2011, 冰凍魚. 請尊重做者勞動成果,複製轉載保留本站連接! 應用開發筆記java
更多HTTP client 應用參見以下鏈接:apache
http://renjie120.iteye.com/blog/1727933數組
package com.pocketdigi; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.List; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; import org.apache.http.protocol.HTTP; import org.apache.http.util.EntityUtils; /** *JDK默認沒有org.apache.http包,須要先去http://hc.apache.org/downloads.cgi下載 *下載HttpClient,解壓,在Eclipse中導入全部JAR */ public class Main { /** * @param args * @throws UnsupportedEncodingException * 這個例子爲了簡單點,沒有捕捉異常,直接在程序入口加了異常拋出聲明 */ public static void main(String[] args) throws Exception { // TODO Auto-generated method stub String url="http://localhost/newspaper/test/1.php"; //POST的URL HttpPost httppost=new HttpPost(url); //創建HttpPost對象 List<NameValuePair> params=new ArrayList<NameValuePair>(); //創建一個NameValuePair數組,用於存儲欲傳送的參數 params.add(new BasicNameValuePair("pwd","2544")); //添加參數 httppost.setEntity(new UrlEncodedFormEntity(params,HTTP.UTF_8)); //設置編碼 HttpResponse response=new DefaultHttpClient().execute(httppost); //發送Post,並返回一個HttpResponse對象 //Header header = response.getFirstHeader("Content-Length"); //String Length=header.getValue(); // 上面兩行能夠獲得指定的Header if(response.getStatusLine().getStatusCode()==200){//若是狀態碼爲200,就是正常返回 String result=EntityUtils.toString(response.getEntity()); //獲得返回的字符串 System.out.println(result); //打印輸出 //若是是下載文件,能夠用response.getEntity().getContent()返回InputStream } } }