package com.ljl.org.httpclient.servlet; import java.io.IOException; import java.io.PrintWriter; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.httpclient.Header; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.ResponseHandler; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.impl.client.BasicResponseHandler; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.message.BasicNameValuePair; import org.apache.http.protocol.HTTP; @SuppressWarnings("serial") public class SimulationLoginServlet extends HttpServlet { // 指定的URL private static String redirectURL = "http://hi.baidu.com/"; // 登录的URL private static String loginURL = "https://passport.baidu.com/?login"; // 创建一个DefautlHttpClient对象 private static final DefaultHttpClient defaultHttpclient = new DefaultHttpClient(); public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } private static HttpResponse response; private static String username = ""; private static String pwd = ""; private static HttpServletRequest req; private static HttpServletResponse resp; public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); username = request.getParameter("userName"); pwd = request.getParameter("pwd"); SimulationLoginServlet.printText(); req.getRequestDispatcher("/index.jsp").forward(req, resp); out.flush(); out.close(); } /** * 定义一个登录的方法 * * @throws IOException * @throws ServletException */ private static boolean Login() throws ServletException, IOException { // 创建一个HttpPost对象 HttpPost httppost = new HttpPost(loginURL); List<NameValuePair> nvp = new ArrayList<NameValuePair>(); nvp.add(new BasicNameValuePair("origURL", redirectURL)); nvp.add(new BasicNameValuePair("domain", "baidu.com")); nvp.add(new BasicNameValuePair("isplogin", "true")); nvp.add(new BasicNameValuePair("formName", " ")); nvp.add(new BasicNameValuePair("method", "")); nvp.add(new BasicNameValuePair("submit", "登录")); nvp.add(new BasicNameValuePair("email", username)); nvp.add(new BasicNameValuePair("password", pwd)); try { httppost.setEntity(new UrlEncodedFormEntity(nvp, HTTP.UTF_8)); try { response = defaultHttpclient.execute(httppost); System.out.println("相应状态:" + response.getStatusLine()); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); // req.getRequestDispatcher("/error.jsp").forward(req, resp); return false; } } catch (UnsupportedEncodingException e) { e.printStackTrace(); } // /req.getRequestDispatcher("/index.jsp").forward(req, resp); return true; } /** * 得到本地的定向 * * @return */ private static String getRedirectLocation() { Header locationHeader = (Header) response.getFirstHeader("Location"); if (locationHeader == null) { return null; } return locationHeader.getValue(); } /** * 得到文本 * * @param redirectLocation * @return */ private static String getText(String redirectLocation) { HttpGet httpget = new HttpGet(redirectLocation); // Create a response handler ResponseHandler<String> responseHandler = new BasicResponseHandler(); String responseBody = ""; try { responseBody = defaultHttpclient.execute(httpget, responseHandler); } catch (Exception e) { e.printStackTrace(); responseBody = null; } finally { httpget.abort(); defaultHttpclient.getConnectionManager().shutdown(); } return responseBody; } /** * 打印文本 * * @throws IOException * @throws ServletException */ public static void printText() throws ServletException, IOException { if (Login()) { String redirectLocation = getRedirectLocation(); if (redirectLocation != null) { System.out.println(getText(redirectLocation)); } } } }
相关推荐
这篇博客“httpClient入门”可能涵盖了HttpClient的基本用法和核心概念。 HttpClient库的核心类是`org.apache.http.client.HttpClient`,它是执行HTTP请求的入口点。通过实例化这个类,我们可以创建一个HTTP客户端...
- 创建HttpClient实例,如`CloseableHttpClient httpclient = HttpClients.createDefault();` - 构建HttpGet或HttpPost对象,设置URL和请求参数。 - 执行请求,如`CloseableHttpResponse response = httpclient....
HttpClient入门的学习资料将引领你深入理解这个库的使用方法和核心概念。以下是对HttpClient的详细介绍,以及如何开始使用它。 一、HttpClient简介 HttpClient是Apache基金会下的一个开源项目,它提供了一套强大的...
### HttpClient入门介绍与实例解析 #### 一、HttpClient概述 HttpClient是Apache Jakarta Commons项目下的一个子项目,提供了高效、功能丰富的HTTP客户端实现。它不仅支持HTTP协议的基本操作,还提供了高级功能,...
1. 创建HttpClient实例。大部分情况下,HttpClient的默认构造函数即可满足需求,例如:`HttpClient httpClient = new HttpClient();` 2. 初始化GET方法的实例。在GetMethod的构造函数中,传入要访问的URL地址,如:...
根据提供的文件内容,我们可以梳理出关于HttpClient入门的相关知识点。 首先,HttpClient是一个开源工具,属于Apache组织,用于处理HTTP请求和响应。它不是一个浏览器,不涉及浏览器的客户端缓存等附加功能,它仅是...
本教程将全面介绍HttpClient的入门知识,帮助初学者理解其核心概念和用法。 1. **HttpClient简介** ... 2. **安装与配置** ...通过阅读提供的"HttpClient入门.pdf"文件,将更深入地了解HttpClient的使用方法和技巧。
整体而言,本教程深入浅出地介绍了HttpClient 4.1的入门使用方法。它适合那些希望快速掌握HttpClient基本操作的初学者,同时也为那些计划使用HttpClient开发复杂HTTP客户端应用的开发者提供了参考。通过这篇教程,...
本文将通过一系列步骤和示例来帮助你入门HttpClient4.1。 ### 1. 环境准备 在开始使用HttpClient之前,你需要确保已经安装了Java环境,并在项目中引入HttpClient的依赖库。通常,你可以通过Maven或Gradle等构建工具...
3. **第一个程序**:创建一个简单的 GET 请求,通常涉及 `HttpClient` 实例化、创建 `HttpGet` 对象、执行请求和处理响应。 4. **如何传递参数**:POST 请求可以通过 `HttpPost` 创建,使用 `NameValuePair` 或 `...
描述中的“快速开发”意味着这份文档可能包含了HttpClient的快速入门教程,教授如何在短时间内掌握基本用法。通常,这包括设置HTTP请求头、构造URL、处理响应数据以及异常处理等内容。对于新手来说,理解这些基本...
- **创建HttpClient实例**:使用`HttpClientBuilder`构建器创建HttpClient对象,可以配置连接池大小、超时等参数。 - **构建HttpGet/HttpPost请求**:通过`HttpGet`或`HttpPost`构造HTTP请求,设置URL、方法和请求...