package com;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import org.apache.commons.httpclient.Cookie;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.cookie.CookiePolicy;
import org.apache.commons.httpclient.cookie.CookieSpec;
import org.apache.commons.httpclient.methods.PostMethod;
public class FormLoginDemo {
static final String LOGON_SITE = "127.0.0.1";
static final int LOGON_PORT = 8080;
public static void main(String[] args) throws Exception {
HttpClient client = new HttpClient();
client.getHostConfiguration().setHost(LOGON_SITE, LOGON_PORT);
// 模拟登录页面 login.jsp->main.jsp
PostMethod post = new PostMethod("/prcs/loginAction.do?method=login");
NameValuePair name = new NameValuePair("userId", "admin");
NameValuePair pass = new NameValuePair("password", "password");
NameValuePair sbx = new NameValuePair("Submit.x", "0");
NameValuePair sby = new NameValuePair("Submit.y", "0");
NameValuePair sb = new NameValuePair("Submit", "Save");
post.setRequestBody(new NameValuePair[] { name, pass,sbx,sby,sb });
int status = client.executeMethod(post);
BufferedReader reader = new BufferedReader(new InputStreamReader(post.getResponseBodyAsStream()));
StringBuffer stringBuffer = new StringBuffer();
String str = "";
while((str = reader.readLine())!=null){
stringBuffer.append(str);
}
String ts = stringBuffer.toString();
System.out.println(ts);
post.releaseConnection();
// 查看 cookie 信息
CookieSpec cookiespec = CookiePolicy.getDefaultSpec();
Cookie[] cookies = cookiespec.match(LOGON_SITE, LOGON_PORT, "/", false,
client.getState().getCookies());
if (cookies.length == 0) {
System.out.println("None");
} else {
for (int i = 0; i < cookies.length; i++) {
System.out.println(cookies[i].toString());
}
}
// 登陆之后访问的页面 main2.jsp
PostMethod get = new PostMethod("/prcs/productionAction.do?method=prodSearchInit");
client.executeMethod(get);
System.out.println(get.getResponseBodyAsString());
get.releaseConnection();
}
}
比较要注意的是NameValuePair的参数最好用Firebug或者Fiddler抓取下表单,看下具体的参数。
这是一个最简单的Httpclient的例子,接下来会写一篇过代理并且访问HTTPS的例子。
分享到:
相关推荐
HttpClient提供了丰富的接口和策略类,使得这些操作变得相对简单。 通过阅读和理解HttpClient的源码,开发者可以更好地了解其内部机制,从而优化性能、处理异常、实现自定义功能。同时,HttpClient与其他工具如...
在阅读博文《HttpClient模拟登陆》时,可以深入学习如何解决这些具体问题,并查看示例代码以获得更详细的实现细节。 标签“源码”意味着你需要关注底层的工作原理,而“工具”标签则暗示HttpClient作为一个实用工具...
在本文中,我们将深入探讨如何使用HttpClient来模拟登录方正系统,以及在此基础上开发类似“课程格子”这样的应用。 一、HttpClient简介 HttpClient是一个支持HTTP协议的客户端编程工具,支持HTTP/1.1及其后续版本...
本主题将深入探讨如何使用HttpClient4库进行百度和58同城的模拟登陆操作。HttpClient4是一个强大的Java库,它提供了丰富的功能来执行HTTP请求,非常适合进行网页交互。 首先,我们来了解HttpClient4的基本用法。...
在这个场景下,我们关注的是如何使用`HttpClient`进行模拟登录。 模拟登录通常是开发自动化测试、爬虫或集成服务时必要的步骤,它允许程序模仿用户在网页上的登录行为。以下是一份使用`HttpClient`进行模拟登录的...
1. **创建HttpClient实例**:HttpClient是整个模拟登录的核心,通过`HttpClientBuilder`构建器创建一个HttpClient对象,以便发起HTTP请求。 2. **设置Cookie管理器**:为了处理登录过程中产生的Cookie,需要配置`...
下面是一个简单的HttpClient 4.3模拟登录12306的代码片段,展示如何构造和发送请求: ```java CloseableHttpClient httpClient = HttpClients.createDefault(); HttpGet getMethod = new HttpGet(...
在这个场景中,我们关注的是如何使用`httpclient`进行模拟登录并携带cookie来访问后续的URL。这个过程通常涉及到处理session和身份验证,对于开发需要登录功能的Web应用或自动化测试脚本尤其有用。 首先,`...
标题中的“httpclient4.3登陆人人”指的是使用Apache HttpClient 4.3版本实现对人人网的自动登录功能。HttpClient是一个流行的开源Java库,它允许开发者执行HTTP请求并处理响应,广泛应用于网络爬虫、自动化测试和...
根据提供的文件信息,我们可以详细探讨关于HttpClient模拟登录的实现方法,特别是在使用JavaScript设置Cookie的场景下。以下是一些关键知识点: ### HTTP客户端(HttpClient) - **HttpClient的基本概念:** ...
标题中的“httpclient3 自动登陆淘宝, 开心网”指的是使用Apache HttpClient 3.x库来实现自动化登录淘宝和开心网的功能。HttpClient是一个强大的HTTP客户端API,它允许开发者模拟浏览器行为,发送HTTP请求并接收...
以下是一个简单的Java HttpClient模拟登录的代码片段: ```java CloseableHttpClient httpClient = HttpClients.createDefault(); HttpGet getMethod = new HttpGet("http://example.com/login"); ...
1. **初始化HttpClient对象**:首先,我们需要创建一个HttpClient实例,这是所有HTTP操作的基础。 2. **构建HttpPost或HttpGet请求**:根据登录页面的需求,我们可能需要POST数据(通常包含用户名和密码)或者GET...
// 创建默认的httpClient实例. CloseableHttpClient httpclient = HttpClients.createDefault(); // 创建httppost HttpPost httppost = new HttpPost(...
在这个场景中,我们关注的是如何使用HTTPClient 4库来模拟登录新浪微博。首先,我们需要理解HTTPClient库的基本概念。 HTTPClient是一个强大的Java库,用于处理HTTP请求和响应。它提供了丰富的功能,包括支持HTTPS...
1. **创建HttpClient实例**:首先,我们需要实例化一个`HttpClient`对象,这将作为我们发送请求的客户端。 ```csharp HttpClient client = new HttpClient(); ``` 2. **设置请求头**:对于某些网站,可能需要设置...
这篇博客“模拟登陆百度的Java实现”提供了一个使用Java编程语言来模拟登录百度网站的实例。以下将详细介绍这个过程中的关键知识点。 首先,我们需要理解HTTP协议的基础,特别是GET和POST请求。在登录过程中,...
这里的`LoginService`类封装了登录操作,它构造了一个`HttpClient`实例,并使用`PostAsync`方法发送POST请求。`FormUrlEncodedContent`用于构建HTTP请求体,包含用户名和密码。你需要将"登录接口URL"替换为实际的...
总的来说,这个项目涵盖了C#编程、WinForms应用开发、网络请求、验证码处理等多个技术点,对于学习和实践Web自动化以及C#编程的开发者来说,是一个有价值的实例。通过学习和分析这个源码,可以提升在实际项目中的...
7. **论坛资源**:`ITeye论坛.mht`文件可能包含了关于HttpClient的使用讨论,如`HTTPClient模拟登陆人人网`,这通常提供了实际项目中的示例和遇到的问题解决方案。 8. **MHT文件**:MHT是一种单一文件的网页存档...