package com.dahantc.fcchannel.test; import java.io.IOException; import java.net.InetAddress; import java.net.InetSocketAddress; import java.net.Socket; import java.net.SocketAddress; import java.net.UnknownHostException; import java.security.KeyManagementException; import java.security.NoSuchAlgorithmException; import java.security.cert.CertificateException; import java.security.cert.X509Certificate; import javax.net.SocketFactory; import javax.net.ssl.SSLContext; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; import org.apache.commons.httpclient.ConnectTimeoutException; import org.apache.commons.httpclient.Header; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.NameValuePair; import org.apache.commons.httpclient.methods.PostMethod; import org.apache.commons.httpclient.params.HttpConnectionParams; import org.apache.commons.httpclient.protocol.Protocol; import org.apache.commons.httpclient.protocol.ProtocolSocketFactory; public class LogInTest { public static void main(String[] args) throws Exception, IOException { String userName = "userName"; String passWord = "passWord"; String loginPath = "https://111.111.111.111/login"; String code = "123"; String cookie = "JSESSIONID=97BC4FCDDAA7AE490AED5EF307505CAE"; logIn(loginPath, cookie, userName, passWord, code); } /** * 登录 * * @param url * @param cookie * @param userName * @param passWord * @param code * @return */ public static boolean logIn(String url, String cookie, String userName, String passWord, String code) { boolean flag = false; System.out.println("===============登录开始==============="); HttpClient httpclient = new HttpClient(); PostMethod method = new PostMethod(url); Protocol myhttps = new Protocol("https", new MySSLProtocolSocketFactory(), 443); Protocol.registerProtocol("https", myhttps); // method.setRequestHeader(new Header("Cookie", cookie)); method.setRequestHeader(new Header("Host", "111.111.111.111")); method.setRequestHeader(new Header("Origin", "https://111.111.111.111")); method.setRequestHeader(new Header("Referer", "https://111.111.111.111/loginIndex.do")); method.setRequestHeader(new Header( "User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.87 Safari/537.36")); NameValuePair[] param = { new NameValuePair("userName", userName), new NameValuePair("passWord", passWord), new NameValuePair("code", code) }; method.setRequestBody(param); try { httpclient.executeMethod(method); String result = method.getResponseBodyAsString(); System.out.println(result); } catch (IOException e) { e.printStackTrace(); } System.out.println("=================登录结束-=============="); return flag; } } /** * */ class MySSLProtocolSocketFactory implements ProtocolSocketFactory { private SSLContext sslcontext = null; private SSLContext createSSLContext() { SSLContext sslcontext = null; try { sslcontext = SSLContext.getInstance("SSL"); sslcontext.init(null, new TrustManager[] { new TrustAnyTrustManager() }, new java.security.SecureRandom()); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } catch (KeyManagementException e) { e.printStackTrace(); } return sslcontext; } private SSLContext getSSLContext() { if (this.sslcontext == null) { this.sslcontext = createSSLContext(); } return this.sslcontext; } public Socket createSocket(Socket socket, String host, int port, boolean autoClose) throws IOException, UnknownHostException { return getSSLContext().getSocketFactory().createSocket(socket, host, port, autoClose); } public Socket createSocket(String host, int port) throws IOException, UnknownHostException { return getSSLContext().getSocketFactory().createSocket(host, port); } public Socket createSocket(String host, int port, InetAddress clientHost, int clientPort) throws IOException, UnknownHostException { return getSSLContext().getSocketFactory().createSocket(host, port, clientHost, clientPort); } public Socket createSocket(String host, int port, InetAddress localAddress, int localPort, HttpConnectionParams params) throws IOException, UnknownHostException, ConnectTimeoutException { if (params == null) { throw new IllegalArgumentException("Parameters may not be null"); } int timeout = params.getConnectionTimeout(); SocketFactory socketfactory = getSSLContext().getSocketFactory(); if (timeout == 0) { return socketfactory.createSocket(host, port, localAddress, localPort); } else { Socket socket = socketfactory.createSocket(); SocketAddress localaddr = new InetSocketAddress(localAddress, localPort); SocketAddress remoteaddr = new InetSocketAddress(host, port); socket.bind(localaddr); socket.connect(remoteaddr, timeout); return socket; } } // 自定义私有类 private static class TrustAnyTrustManager implements X509TrustManager { public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException { } public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException { } public X509Certificate[] getAcceptedIssuers() { return new X509Certificate[] {}; } } }
相关推荐
- **POST请求与上传文件**:HttpClient可以方便地发送POST请求,包括上传文件或表单数据,通过`PostMethod`和`MultipartRequestEntity`等类实现。 总的来说,HttpClient3.1是一个强大且灵活的HTTP客户端工具,适用...
以下是一个简单的HttpClient 3.1使用示例,展示了如何发送一个GET请求: ```java import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.methods.GetMethod; public class ...
以下是一个简单的示例,展示了如何使用HttpClient发送一个GET请求: ```java import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.methods.GetMethod; public class ...
在文件上传方面,HttpClient3.1 提供了`MultipartRequestEntity`类,允许你构建包含多个部分(如文件和文本字段)的POST请求。通过设置`Part[]`数组,你可以指定要上传的文件和字段名,然后将其传递给`...
《Apache Commons HttpClient 3.1详解》 Apache Commons HttpClient 是一个功能强大的Java库,专为实现客户端HTTP通信而设计。这个3.1版本是HttpClient的一个重要里程碑,它提供了丰富的功能和改进,使得开发者能够...
《HttpClient 3.1在Android开发中的应用及详解》 HttpClient是Apache软件基金会的一个开源项目,提供了强大的HTTP客户端实现,广泛应用于Java平台的网络通信。本文主要围绕"HttpClient 3.1"版本,探讨其在Android...
1. **HTTP方法支持**:HttpClient 3.1 支持GET、POST、PUT、DELETE等多种HTTP方法,可以设置请求头、发送表单数据、上传文件等。 2. **连接管理**:提供连接池功能,可以复用TCP连接,提高性能并减少网络延迟。 3. *...
3. 发送请求:使用HttpClient的execute方法发送POST请求。 ```java int statusCode = httpClient.execute(postMethod); ``` 4. 处理响应:根据返回的statusCode判断请求是否成功,并读取响应内容。 ```java if ...
例如,`HttpPost`中的`setEntity`方法用于设置POST请求的数据。 HttpClient对于处理响应也有强大的支持。`HttpResponse`接口封装了服务器的响应,包括状态码、头部信息和实体内容。我们可以使用`EntityUtils`类来...
Apache Commons HttpClient 3.1 是一个功能强大的Java HTTP客户端库,它提供了全面的HTTP协议支持,包括基本的GET和POST请求、Cookie管理、重定向处理以及HTTPS通信。这个库是Java开发者进行网络编程时的重要工具,...
2. **发送POST请求**:提交表单数据,如登录、注册或上传文件。 3. **处理响应**:解析HTTP响应,提取所需信息,如状态码、响应头和主体内容。 4. **管理Cookies**:维持会话状态,实现登录保持功能。 5. **使用代理...
标题中的"commons-httpclient3.1.jar,commons-codec1.3.jar,commons-logging1.1.1.jar"指的是三个关键的Java库文件,它们是Apache HttpClient项目的一部分,用于在Java应用程序中实现HTTP通信。这些JAR(Java ...
HttpClient 3.1支持Cookie管理,通过`CookiePolicy`和`CookieSpec`可以配置Cookie的接受和发送策略。此外,`HttpState`类用于存储会话状态,包括Cookie,可以在多个请求之间共享。 六、安全与认证 HttpClient支持...
《HttpClient 3.1 JavaDoc CHM版》详解 HttpClient 是一个开源的Java库,由Apache软件基金会维护,主要用于执行HTTP请求。这个CHM(Compiled Help Manual)版本的JavaDoc文档是HttpClient 3.1版本的官方API参考,它...
对于POST请求,HttpClient支持多种数据提交方式,如表单数据、MultipartEntity(适用于文件上传)等。 8. **线程安全**: HttpClient 3.1 在正确配置和使用下,可以保证在多线程环境中的安全性。 9. **异步请求*...
这个库尤其适用于构建需要与Web服务器交互的应用,无论是简单的GET请求还是复杂的POST操作。 在HttpClient 3.1中,主要包含以下几个核心概念和组件: 1. **HttpClient实例**:这是整个库的核心,负责管理连接、重...
标题提到的是`httpclient3.1`版本,这是一个较旧但仍然在某些项目中使用的版本。 在HTTPClient 3.1中,主要包含以下几个核心概念和组件: 1. **HttpClient类**:这是整个库的核心,用于创建和执行HTTP请求。你可以...
在本文中,我们将深入探讨HttpClient的使用,包括如何发送GET、POST和PUT请求,并理解其核心概念和源码解析。 首先,HttpClient的核心组件包括HttpClient实例、HttpRequest对象和HttpResponse对象。HttpClient实例...
在提供的信息中,我们关注的是三个Java库:`Commons-httpClient3.1.jar`, `htmllexer.jar`, 和 `htmlparser.jar`。这些库在构建简易爬虫时扮演着关键角色。下面我们将详细探讨这三个库的功能、用途以及如何在实际...