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
相关文章
相关标签/搜索