轉載:http://www.cnblogs.com/tengpan-cn/p/4859676.html
因為代碼與Java用apache的HttpClient發送Post請求大部份重復,所以就不貼整段代碼了,只把不同的地方貼出來。 發送Cookie就必須先得到Cookie,所以至少發送兩次請求,第一次用於得到Cookie,第二次在發送請求前加上Cookie 在第一次發送Post請求前,先建立一個DefaultHttpClient對象的引用,在上文中沒有建立引用,new了一個DefaultHttpClient對象后直接使用。既然要發送Cookie,必然先要得到Cookie,要得到cookie就需要DefaultHttpClient.在第一次發送請求后,就可以使用DefaultHttpClient對象的getCookieStore(),得到一個CookieStore對象,我們用到的Cookie就存在這里。還是貼一下這幾句代碼: 上文37行作如下修改:
- DefaultHttpClient httpclient=new DefaultHttpClient();
- HttpResponse response=httpclient.execute(httppost);
- CookieStore cookiestore=httpclient.getCookieStore();
- //得到Cookie
第二次請求,把第一次請求的代碼再復制一次。當然,變量名會重復,改一下即可。現在要在發送請求之前加上剛才得到的cookie,還是改上文的37行:
- DefaultHttpClient httpclient2=new DefaultHttpClient();
- httpclient2.setCookieStore(cookiestore);
- //把第一次請求的cookie加進去
- HttpResponse response2=httpclient2.execute(httppost2);
© 2011, 冰凍魚. 請尊重作者勞動成果,復制轉載保留本站鏈接! 應用開發筆記
更多HTTP client 應用參見如下連接:
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 } } }
