HTTPclient cookie的獲取與設置

由於代碼與Java用apache的HttpClient發送Post請求大部份重複,因此就不貼整段代碼了,只把不一樣的地方貼出來。
發送Cookie就必須先獲得Cookie,因此至少發送兩次請求,第一次用於獲得Cookie,第二次在發送請求前加上Cookie
在第一次發送Post請求前,先創建一個DefaultHttpClient對象的引用,在上文中沒有創建引用,new了一個DefaultHttpClient對象後直接使用。既然要發送Cookie,必然先要獲得Cookie,要獲得cookie就須要DefaultHttpClient.在第一次發送請求後,就可使用DefaultHttpClient對象的getCookieStore(),獲得一個CookieStore對象,咱們用到的Cookie就存在這裏。仍是貼一下這幾句代碼:
上文37行做以下修改:
php

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

第二次請求,把第一次請求的代碼再複製一次。固然,變量名會重複,改一下便可。如今要在發送請求以前加上剛纔獲得的cookie,仍是改上文的37行:html

  1. DefaultHttpClient httpclient2=new DefaultHttpClient();
  2. httpclient2.setCookieStore(cookiestore);
  3. //把第一次請求的cookie加進去
  4. HttpResponse response2=httpclient2.execute(httppost2);

© 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
        }
    }
}
Java用apache的HttpClient
相關文章
相關標籤/搜索