`
shenjianhua1984
  • 浏览: 1173 次
社区版块
存档分类
最新评论

使用httpclient免登录访问

    博客分类:
  • http
阅读更多
    在实际应用中,向服务端获取数据,每次都需要登录,十分麻烦。希望登录一次后,在一定时间内不需要再次登录,就能直接访问服务了。
    要实现该功能,也十分简单,首先需要服务端支持记住我的功能,客户端登录的时候选择记住我,这个时候服务端就会把记住我的信息存在cookie中返回给客户端,客户端后面登录的时候只需要带上这个cookie中的值,就可以直接免登录了
    具体实现代码:

第一步,模拟登录请求,保存cookie
public static List<String> sendLogin(String url) {
		List<String> list = new ArrayList<String>();
		HttpGet request = new HttpGet(url);
		try {
			HttpResponse response = HttpClients.createDefault()
					.execute(request);
			if (response.getStatusLine().getStatusCode() == 200) {
				String result = EntityUtils.toString(response.getEntity());
                                // 从响应消息中获取cookie中的rememberMe值,并保存到list中,供后面使用
				Header[] hhh = response.getHeaders("Set-Cookie");
				for (Header t : hhh) {
					String v = t.getValue();
					if (v.startsWith("rememberMe")) {
						list.add(v);
					}
				}
			}
		} catch (Exception ex) {
			ex.printStackTrace();
		}
		return list;
	}

第二步,使用返回的cookie值,发送直接请求
public static String getDate(String url, List<String> cookies) {
		HttpGet request = new HttpGet(url);
		try {
			for (String cookie : cookies) {
				request.addHeader("Cookie", cookie);
			}

			HttpResponse response = HttpClients.createDefault()
					.execute(request);
			if (response.getStatusLine().getStatusCode() == 200) {
				String result = EntityUtils.toString(response.getEntity());
				return result;

			}
		} catch (Exception ex) {
			ex.printStackTrace();
		}
		return null;
	}


第一次获取的cookie值也可以保存在文件,下次直接使用cookie值进行请求,而不需要再次登录。
该功能对于服务端也有要求,对于第二次请求的url,在服务端设置对于记住我功能可以访问。

需要的jar包:
               <dependency>
			<groupId>org.apache.httpcomponents</groupId>
			<artifactId>httpcore</artifactId>
			<version>4.4.1</version>
		</dependency>

		<dependency>
			<groupId>org.apache.httpcomponents</groupId>
			<artifactId>httpclient</artifactId>
			<version>4.5</version>
		</dependency>
分享到:
评论

相关推荐

    httpclient绕过登陆验证码直接抓取内部数据

    使用 HttpClient 绕过登录验证码可以实现免登录访问,但是需要注意 Cookie 的路径、域名和过期时间等信息,并选择合适的 Cookie 策略。同时,我们也需要注意.blackhat 的攻击,以保护用户的登录信息。

    httpclient4.1访问https的配置方法

    我们将涵盖SSL证书的生成、Tomcat服务器的SSL配置以及HttpClient的使用。” 【标签】:“httpclient4.1 https ssl” 【正文】: 在现代的互联网环境中,安全的通信协议是至关重要的。HTTPS(HTTP over SSL/TLS)...

    WebApi系列-通过HttpClient来调用WebApi接口.doc

    本文将详细介绍如何使用`HttpClient`来调用Web API接口。 #### 二、HttpClient简介 `HttpClient`是一个被广泛使用的类,用于发起HTTP请求并接收响应。它在.NET框架中得到了很好的支持和封装。与其他语言如Java或...

    httpClient4.1入门教程.pdf

    最后,文档还演示了如何使用HttpClient访问HTTPS协议的站点,包括生成KeyStore以及配置Tomcat服务器支持SSL的方法,并指导用户如何通过浏览器和HttpClient访问经过SSL加密的应用。 整体而言,本教程深入浅出地介绍...

    org.apache.commons.httpclient-3.1.jar

    5. **使用代理**:在需要经过代理服务器访问互联网的环境中工作。 6. **进行认证**:对受保护的Web资源进行身份验证。 总的来说,Apache Commons HttpClient 3.1是Java开发者处理HTTP通信的强大工具,它提供了丰富...

    使用httpclient实现免费的google翻译api

    【使用HttpClient实现免费的Google翻译API】 在Java开发中,有时候我们需要实现文本的翻译功能,但Google官方的翻译API是收费的。为了节省成本,我们可以利用HttpClient库来模拟用户访问Google翻译网页,然后通过...

    HttpClient学习总结.docx

    在实际开发中,HttpClient可以与各种其他库结合使用,如JSON库解析响应数据,或者使用线程池来并行处理多个请求。HttpClient的Command Pattern设计使得它易于扩展和定制,以适应不同项目的需求。由于HttpClient遵循...

    飞信免费发送接口API的测试(HTTPClient实现)

    标题中的“飞信免费发送接口API的测试(HTTPClient实现)”是指使用HTTPClient库来测试飞信(Fetion)的免费短信发送功能。飞信是中国移动推出的一种即时通讯服务,它允许用户通过网络免费发送短信到中国移动的手机...

    HttpClient以及获取页面内容应用

    HttpClient已经应用在很多的项目中,比如Apache Jakarta上很著名的另外两个开源项目Cactus和HTMLUnit都使用了HttpClient。 下载地址:  http://hc.apache.org/downloads.cgi 1.2特性 1. 基于标准、纯净的java语言。...

    HttpClient学习笔记

    ### HttpClient学习笔记知识点详解 #### 一、HttpClient简介与特点 **HttpClient** 是 Apache Commons 库中的一个子项目,主要用于简化 Java 程序...对于 Java 开发者来说,掌握 HttpClient 的使用技巧是非常重要的。

    AutoLoginWebDemo自动登录网站

    当用户首次成功登录后,服务器会返回一个包含用户信息的cookie(或设置session),客户端保存该cookie并在下次访问时发送给服务器,从而实现免输入密码的快速登录。 2. **C#与Web编程** C#是一种广泛用于开发...

    tornado-couchdb:一个 Python 模块,提供阻塞和非阻塞(异步)客户端以使用 Tornado 的 httpclient 访问 CouchDB。 源代码在 MIT 许可下作为免费软件发布

    使用 Tornado 的 httpclient 的 CouchDB 的阻塞和非阻塞(异步)客户端 这个 Python 模块包装了 CouchDB HTTP REST API 并定义了一个通用接口,用于在 CouchDB 上进行阻塞和非阻塞操作。 安装 使用pip安装: pip ...

    .NET阿里巴巴平台的免登陆接口的实现代码

    在.NET开发环境中,针对阿里巴巴平台实现免登陆接口是一项常见的需求,尤其对于自动化测试、数据抓取或者集成系统来说,能够避免频繁的人工登录操作,提高工作效率。本文将深入讲解如何在.NET框架下实现这一功能。 ...

    整合腾讯qq登录接口 C# .net源码 免费

    QQ登录接口的整合是许多开发者在构建Web应用或桌面应用时需要实现的一项功能,尤其是在中国的互联网环境中,QQ作为一款广泛使用的社交工具,其登录接口能够为应用带来便捷的用户接入方式。本篇将详细讲解如何使用C# ...

    Android实现https网络访问

    Android实现https网络访问,...3、HttpClient方式实现,支持所有Https免验证方式链接(与2类似,只不过采用HttpClient方式实现)。4、HttpClient方式实现,支持验证指定证书(与1类似,只不过采用HttpClient方式实现)

    Jsoup 网络爬虫(动态ip代理,突破ip访问次数限制) 爬取全国各省市区数据

    在“Jsoup网络爬虫(动态ip代理,突破ip访问次数限制)爬取全国各省市区数据”这个项目中,我们将会深入探讨如何使用Jsoup进行网络爬虫开发,并且解决在爬虫过程中遇到的IP访问限制问题。 首先,我们需要理解Jsoup...

    实验四 Android的网络应用

    - 使用`HttpClient`可以方便地发送GET和POST请求,并处理响应。 3. **利用JSON数据进行服务器和客户端通信**: - JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。 - 在实验中,...

    kingdee单点登录方案

    这些页面可以免受SSO过滤器的限制,例如登录页面(`login.do`)、错误提示页(`error.jsp`)或登录表单(`login.jsp`)。 - **修改`web.xml`**:需要在`web.xml`中添加相应的过滤器配置,以便启动单点登录功能。具体配置...

    免费 HtmlAgilityPack分析工具

    在实际使用HtmlAgilityPack分析工具时,开发者通常会结合其他技术,如C#编程语言、HttpClient类来发送HTTP请求获取网页源码,再利用HtmlAgilityPack进行解析。此外,工具可能还提供了一些可视化或命令行界面,以简化...

Global site tag (gtag.js) - Google Analytics