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)); } } } }
相关推荐
一个java web project的压缩包。 里面是一个标准的httpclient测试类。 包含3个必备的jar包。 导入myeclipse即可使用。
学习C#必经之路,入门级知识总结,笔记本知识概况,走一步再走一步
介绍 ... 文献资料 有关更多信息,请参见官方API文档。 英文: : 日语: : 要求 ...使用安装LINE Messaging API SDK。... $ composer require linecorp/line-bot-sdk ... 机器人客户端的构造函数需要HTTPClient的实例。 默
Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...
以用户管理为例,结合spring struts hibernate dwr jstl做的实例,struts hibernate dwr 与Spring完全结合,实现用户列表、信息增、删、改、查、维护时用户重名提示等功能,还包括页面自动转码设置(web.xml),...
Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...
入门实例 在这个例子中,我们展示了如何并行获取多个页面,以及如何在它们全部被检索后将它们合并。 您可以在这里找到源代码: 。 首先,我们可以使用检索单个页面,如下所示: final Task< Response> google = ...
第一个假设您已经有一个指向要使用的对象实例的指针,第二个需要定义。 假设您有一个对象: type HttpClient struct {} client := new ( HttpClient ) 要将其定义为服务,您需要做的是: dic := container . N
开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...
开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...
开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...
开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...
开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...
开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...
开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...
开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...
开发它是用于在UTF-8 Oracle实例中使用ASCII编码的Oracle 数据库中来正确的传输非ASCII字符。 Java模板语言 Beetl Beetl,是Bee Template Language的缩写,它绝不是简单的另外一种模板引擎,而是新一代的模板引擎,...