httpClient 保持session

import org.apache.commons.httpclient.Cookie;  
import org.apache.commons.httpclient.HttpClient;  
import org.apache.commons.httpclient.cookie.CookiePolicy;  
import org.apache.commons.httpclient.NameValuePair;  
import org.apache.commons.httpclient.methods.GetMethod;  
import org.apache.commons.httpclient.methods.PostMethod;

public class TestLogin {
     public static void main(String[] args) {  
            // 登陆 Url  
            String loginUrl = "http://139.196.40.80:3000/login";  
            // 需登陆后访问的 Url  
            String dataUrl = "http://139.196.40.80:3000/index";  
      
            HttpClient httpClient = new HttpClient();  
      
            // 模拟登陆,按实际服务器端要求选用 Post 或 Get 请求方式  
            PostMethod postMethod = new PostMethod(loginUrl);  
      
            // 设置登陆时要求的信息,用户名和密码  
            NameValuePair[] data = { new NameValuePair("username", "lixiuming"),  
                    new NameValuePair("password", "lixiuming") };  
            postMethod.setRequestBody(data);  
            try {  
                // 设置 HttpClient 接收 Cookie,用与浏览器一样的策略  
                httpClient.getParams().setCookiePolicy(  
                        CookiePolicy.BROWSER_COMPATIBILITY);  
                httpClient.executeMethod(postMethod);  
                // 获得登陆后的 Cookie  
                Cookie[] cookies = httpClient.getState().getCookies();  
                StringBuffer tmpcookies = new StringBuffer();  
                for (Cookie c : cookies) {  
                    tmpcookies.append(c.toString() + ";");
                   
                }
                // 进行登陆后的操作1581,1602,1603,1610,1609,1608,1607,1606,1605,1620,1619,1617,1616,1622,1626,1642,1648,1647,1657  
                GetMethod getMethod = new GetMethod(dataUrl);  
                // 每次访问需授权的网址时需带上前面的 cookie 作为通行证  
                getMethod.setRequestHeader("cookie", tmpcookies.toString());  
                // 你还可以通过 PostMethod/GetMethod 设置更多的请求后数据  
                // 例如,referer 从哪里来的,UA 像搜索引擎都会表名自己是谁,无良搜索引擎除外  
                postMethod.setRequestHeader("Referer", "http://139.196.40.80:3000/index");  
                postMethod.setRequestHeader("User-Agent", "www Spot");  
                httpClient.executeMethod(getMethod);  
                // 打印出返回数据,检验一下是否成功  
                String text = getMethod.getResponseBodyAsString();  
                System.out.println(text);  
            } catch (Exception e) {  
                e.printStackTrace();  
            }  
        }
}

时间: 2024-11-04 23:40:23

httpClient 保持session的相关文章

大叔也说Xamarin~Android篇~为HttpClient共享Session,android与api的session共享机制

杂谈 在进行android进行开发时,我们的数据一般通过接口来获收,这里指的接口泛指web api,webservice,wcf,web应用程序等:它们做为服务端与数据库进行直接通讯,而APP这块通过向这些接口发Http请求来获得数据,这样的好处大叔认为,可以有效的降低软件的开发难度,所以数据交互都被分离到了服务层而,而与客户交互的功能完全都在APP端,这类似于目前比较流行的SOA架构,即一个服务为多种终端服务:无论是你WEB网站,手机IOS,手机Android,平板还是其它TV之类的,都统一调

HttpClient session

session概述 session机制 session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息. 当程序需要为某个客户端的请求创建一个session的时候,服务器首先检查这个客户端的请求里是否已包含了一个session标识 - 称为session id,如果已包含一个session id则说明以前已经为此客户端创建过session,服务器就按照session id把这个session检索出来使用(如果检索不到,可能会新建一个),如果客户端请求不

webview HttpClient 怎么保持会话session统一

cookies session均为key---value的形式展示,  1.    session是存储在服务端,并有一块区域控件存储用户信息,主要是为了判断该用户是否登录,在客户端采用httpClient/HttpUrlConnection进行登录请求的时候,传过去的username=“ccc” 服务端中的session进行判断是否存在改sessionId,以及value,不存在代表改用户不曾登录,服务器会自动生成唯一的sessionId其为key,传过来的ccc则为value,key="se

Android 通过httpclient请求web服务器,并解决用户登录session保持

package com.rainet.tiis.network; import java.util.Iterator;import java.util.List;import java.util.Map; import org.apache.http.HttpResponse;import org.apache.http.NameValuePair;import org.apache.http.client.CookieStore;import org.apache.http.client.Ht

HttpClient使用详解 (一)

Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们再讨论),它不仅是客户端发送Http请求变得容易,而且也方便了开发人员测试接口(基于Http协议的),即提高了开发的效率,也方便提高代码的健壮性.因此熟练掌握HttpClient是很重要的必修内容,掌握HttpClient后,相信对于Http协议的了解会更加深入. 一.简介 HttpClient是Apache Jakarta Common下的子项目,用

HttpClient的CircularRedirectException异常原因及解决办法

HttpClient的CircularRedirectException异常原因及解决办法 这两天在使用我自己爬虫抓取网页的时候总是出现 org.apache.http.client.ClientProtocolException at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:909) at org.apache.http.impl.client.AbstractHttpClie

Atitit.http httpclient实践java c# .net php attilax总结

1. Navtree>> net .http1 2. Httpclient理论1 2.1. 自动url转向的控制1 3. Java里面的httpclient1 4. C# .net的httpclient2 4.1.1. .NET 4.5(C#):2 4.2. 对COOKIE和SEIION支持区别3 4.3. 用户对是否自动url转向的控制3 4.4. 对用户代理服务器的支持3 5. Php的httpclient3 6. Node.js4 7. solu解决问题::4 8. ref参考资料4 8

HttpClient和HttpURLConnection整合汇总对比

性能 1.HttpUrlConnection直接支持GZIP压缩:HttpClient也支持,但要自己写代码处理. 2.HttpUrlConnection直接支持系统级连接池,即打开的连接不会直接关闭,在一段时间内所有程序可共用:HttpClient当然也能做到,但毕竟不如官方直接系统底层支持好. 3.HttpUrlConnection直接在系统层面做了缓存策略处理(4.0版本以上),加快了重复请求的速度. 4.关于速度方面,网上有些大牛做过测试,但因访问站点的数据量,二次连接访问等发现测试结果

HttpClient和HttpURLConnection的区别

总结了网上的一些资源,主要有以下两个观点: 分析一: 在研究Volley框架的源码中,发现它在HTTP请求的使用上比较有意思,在Android 2.3及以上版本,使用的是HttpURLConnection,而在Android 2.2及以下版本,使用的是HttpClient.我也比较好奇这么使用的原因,于是专门找到了一位Google的工程师写的一篇博客,文中对HttpURLConnection和HttpClient进行了对比,下面我就给大家简要地翻译一下. 原文地址:http://android-