`
jilong-liang
  • 浏览: 482626 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类

httpclient的入门实例

阅读更多

 

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));
			}
		}
	}
}

 



 

  • 大小: 84.3 KB
  • 大小: 39.1 KB
分享到:
评论

相关推荐

    httpClient入门

    这篇博客“httpClient入门”可能涵盖了HttpClient的基本用法和核心概念。 HttpClient库的核心类是`org.apache.http.client.HttpClient`,它是执行HTTP请求的入口点。通过实例化这个类,我们可以创建一个HTTP客户端...

    HttpClient实例+必备3个jar包

    - 创建HttpClient实例,如`CloseableHttpClient httpclient = HttpClients.createDefault();` - 构建HttpGet或HttpPost对象,设置URL和请求参数。 - 执行请求,如`CloseableHttpResponse response = httpclient....

    HttpClient入门

    HttpClient入门的学习资料将引领你深入理解这个库的使用方法和核心概念。以下是对HttpClient的详细介绍,以及如何开始使用它。 一、HttpClient简介 HttpClient是Apache基金会下的一个开源项目,它提供了一套强大的...

    比较全的httpclient入门介绍和例子代码

    ### HttpClient入门介绍与实例解析 #### 一、HttpClient概述 HttpClient是Apache Jakarta Commons项目下的一个子项目,提供了高效、功能丰富的HTTP客户端实现。它不仅支持HTTP协议的基本操作,还提供了高级功能,...

    httpclient入门必看

    1. 创建HttpClient实例。大部分情况下,HttpClient的默认构造函数即可满足需求,例如:`HttpClient httpClient = new HttpClient();` 2. 初始化GET方法的实例。在GetMethod的构造函数中,传入要访问的URL地址,如:...

    HttpClient入门陆小马功钟浩.pdf

    根据提供的文件内容,我们可以梳理出关于HttpClient入门的相关知识点。 首先,HttpClient是一个开源工具,属于Apache组织,用于处理HTTP请求和响应。它不是一个浏览器,不涉及浏览器的客户端缓存等附加功能,它仅是...

    HttpClient入门教程全解

    本教程将全面介绍HttpClient的入门知识,帮助初学者理解其核心概念和用法。 1. **HttpClient简介** ... 2. **安装与配置** ...通过阅读提供的"HttpClient入门.pdf"文件,将更深入地了解HttpClient的使用方法和技巧。

    httpClient4.1入门教程.pdf

    整体而言,本教程深入浅出地介绍了HttpClient 4.1的入门使用方法。它适合那些希望快速掌握HttpClient基本操作的初学者,同时也为那些计划使用HttpClient开发复杂HTTP客户端应用的开发者提供了参考。通过这篇教程,...

    httpClient4.1入门教程

    本文将通过一系列步骤和示例来帮助你入门HttpClient4.1。 ### 1. 环境准备 在开始使用HttpClient之前,你需要确保已经安装了Java环境,并在项目中引入HttpClient的依赖库。通常,你可以通过Maven或Gradle等构建工具...

    httpClient4.1入门教程.docx

    3. **第一个程序**:创建一个简单的 GET 请求,通常涉及 `HttpClient` 实例化、创建 `HttpGet` 对象、执行请求和处理响应。 4. **如何传递参数**:POST 请求可以通过 `HttpPost` 创建,使用 `NameValuePair` 或 `...

    HttpClient中文文档,快速开发

    描述中的“快速开发”意味着这份文档可能包含了HttpClient的快速入门教程,教授如何在短时间内掌握基本用法。通常,这包括设置HTTP请求头、构造URL、处理响应数据以及异常处理等内容。对于新手来说,理解这些基本...

    httpclient-4.5.2.jar.zip

    - **创建HttpClient实例**:使用`HttpClientBuilder`构建器创建HttpClient对象,可以配置连接池大小、超时等参数。 - **构建HttpGet/HttpPost请求**:通过`HttpGet`或`HttpPost`构造HTTP请求,设置URL、方法和请求...

Global site tag (gtag.js) - Google Analytics