HTTPclient cookie的獲取與設置


因為代碼與Java用apache的HttpClient發送Post請求大部份重復,所以就不貼整段代碼了,只把不同的地方貼出來。
發送Cookie就必須先得到Cookie,所以至少發送兩次請求,第一次用於得到Cookie,第二次在發送請求前加上Cookie
在第一次發送Post請求前,先建立一個DefaultHttpClient對象的引用,在上文中沒有建立引用,new了一個DefaultHttpClient對象后直接使用。既然要發送Cookie,必然先要得到Cookie,要得到cookie就需要DefaultHttpClient.在第一次發送請求后,就可以使用DefaultHttpClient對象的getCookieStore(),得到一個CookieStore對象,我們用到的Cookie就存在這里。還是貼一下這幾句代碼:
上文37行作如下修改:

  1. DefaultHttpClient httpclient=new DefaultHttpClient();
  2. HttpResponse response=httpclient.execute(httppost);
  3. CookieStore cookiestore=httpclient.getCookieStore();
  4. //得到Cookie

第二次請求,把第一次請求的代碼再復制一次。當然,變量名會重復,改一下即可。現在要在發送請求之前加上剛才得到的cookie,還是改上文的37行:

  1. DefaultHttpClient httpclient2=new DefaultHttpClient();
  2. httpclient2.setCookieStore(cookiestore);
  3. //把第一次請求的cookie加進去
  4. 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
        }
    }
}
Java用apache的HttpClient

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM