`

httpclient3.1发送https 的post请求,带参

 
阅读更多
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[] {};
		}
	}

}

 

分享到:
评论

相关推荐

    HttpClient3.1.jar

    - **POST请求与上传文件**:HttpClient可以方便地发送POST请求,包括上传文件或表单数据,通过`PostMethod`和`MultipartRequestEntity`等类实现。 总的来说,HttpClient3.1是一个强大且灵活的HTTP客户端工具,适用...

    httpclient 3.1 jar包 手册 源代码

    以下是一个简单的HttpClient 3.1使用示例,展示了如何发送一个GET请求: ```java import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.methods.GetMethod; public class ...

    httpclient3.1 需要的jar

    以下是一个简单的示例,展示了如何使用HttpClient发送一个GET请求: ```java import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.methods.GetMethod; public class ...

    HttpClient3.1 学习整理

    在文件上传方面,HttpClient3.1 提供了`MultipartRequestEntity`类,允许你构建包含多个部分(如文件和文本字段)的POST请求。通过设置`Part[]`数组,你可以指定要上传的文件和字段名,然后将其传递给`...

    commons-httpclient-3.1jar包

    《Apache Commons HttpClient 3.1详解》 Apache Commons HttpClient 是一个功能强大的Java库,专为实现客户端HTTP通信而设计。这个3.1版本是HttpClient的一个重要里程碑,它提供了丰富的功能和改进,使得开发者能够...

    httpclient-3.1

    《HttpClient 3.1在Android开发中的应用及详解》 HttpClient是Apache软件基金会的一个开源项目,提供了强大的HTTP客户端实现,广泛应用于Java平台的网络通信。本文主要围绕"HttpClient 3.1"版本,探讨其在Android...

    commons-httpClient 3.1 jar和src

    1. **HTTP方法支持**:HttpClient 3.1 支持GET、POST、PUT、DELETE等多种HTTP方法,可以设置请求头、发送表单数据、上传文件等。 2. **连接管理**:提供连接池功能,可以复用TCP连接,提高性能并减少网络延迟。 3. *...

    commons-httpclient-3.1短信发送包

    3. 发送请求:使用HttpClient的execute方法发送POST请求。 ```java int statusCode = httpClient.execute(postMethod); ``` 4. 处理响应:根据返回的statusCode判断请求是否成功,并读取响应内容。 ```java if ...

    commons-httpclient-3.1.jar

    例如,`HttpPost`中的`setEntity`方法用于设置POST请求的数据。 HttpClient对于处理响应也有强大的支持。`HttpResponse`接口封装了服务器的响应,包括状态码、头部信息和实体内容。我们可以使用`EntityUtils`类来...

    commons-httpclient-3.1 java API详细index格式文档

    Apache Commons HttpClient 3.1 是一个功能强大的Java HTTP客户端库,它提供了全面的HTTP协议支持,包括基本的GET和POST请求、Cookie管理、重定向处理以及HTTPS通信。这个库是Java开发者进行网络编程时的重要工具,...

    org.apache.commons.httpclient-3.1.jar

    2. **发送POST请求**:提交表单数据,如登录、注册或上传文件。 3. **处理响应**:解析HTTP响应,提取所需信息,如状态码、响应头和主体内容。 4. **管理Cookies**:维持会话状态,实现登录保持功能。 5. **使用代理...

    commons-httpclient-3.1jar

    对于POST请求,HttpClient支持多种数据提交方式,如表单数据、MultipartEntity(适用于文件上传)等。 8. **线程安全**: HttpClient 3.1 在正确配置和使用下,可以保证在多线程环境中的安全性。 9. **异步请求*...

    commons-httpclient3.1.jar,commons-codec1.3.jar,commons-logging1.1.1.jar

    标题中的"commons-httpclient3.1.jar,commons-codec1.3.jar,commons-logging1.1.1.jar"指的是三个关键的Java库文件,它们是Apache HttpClient项目的一部分,用于在Java应用程序中实现HTTP通信。这些JAR(Java ...

    commons-httpclient-3.1.rar

    HttpClient 3.1支持Cookie管理,通过`CookiePolicy`和`CookieSpec`可以配置Cookie的接受和发送策略。此外,`HttpState`类用于存储会话状态,包括Cookie,可以在多个请求之间共享。 六、安全与认证 HttpClient支持...

    httpclient3.1 javadoc chm版

    《HttpClient 3.1 JavaDoc CHM版》详解 HttpClient 是一个开源的Java库,由Apache软件基金会维护,主要用于执行HTTP请求。这个CHM(Compiled Help Manual)版本的JavaDoc文档是HttpClient 3.1版本的官方API参考,它...

    httpclient-3.1.zip

    这个库尤其适用于构建需要与Web服务器交互的应用,无论是简单的GET请求还是复杂的POST操作。 在HttpClient 3.1中,主要包含以下几个核心概念和组件: 1. **HttpClient实例**:这是整个库的核心,负责管理连接、重...

    httpclient3.1和2个相关的jar包

    标题提到的是`httpclient3.1`版本,这是一个较旧但仍然在某些项目中使用的版本。 在HTTPClient 3.1中,主要包含以下几个核心概念和组件: 1. **HttpClient类**:这是整个库的核心,用于创建和执行HTTP请求。你可以...

    HttpClient (POST GET PUT)请求

    在本文中,我们将深入探讨HttpClient的使用,包括如何发送GET、POST和PUT请求,并理解其核心概念和源码解析。 首先,HttpClient的核心组件包括HttpClient实例、HttpRequest对象和HttpResponse对象。HttpClient实例...

    Commons-httpClient3.1.Jar,htmllexer.jar,htmlparser.jar

    在提供的信息中,我们关注的是三个Java库:`Commons-httpClient3.1.jar`, `htmllexer.jar`, 和 `htmlparser.jar`。这些库在构建简易爬虫时扮演着关键角色。下面我们将详细探讨这三个库的功能、用途以及如何在实际...

Global site tag (gtag.js) - Google Analytics