`
chenyuguxing
  • 浏览: 39343 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

java代码使用https访问接口

 
阅读更多
<pre name="code" class="java">/**
 * Test.java
 * cn.ffcs.interf.common.util
 *
 * Function: TODO 
 *
 *   ver     date      		author
 * ──────────────────────────────────
 *   		 14-六月-14 		caigch
 *
 * Copyright (c) 2014, TNT All Rights Reserved.
 */

package cn.ffcs.portal.library.util;

import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;

import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.methods.multipart.FilePart;
import org.apache.commons.httpclient.methods.multipart.MultipartRequestEntity;
import org.apache.commons.httpclient.methods.multipart.Part;
import org.apache.commons.lang.StringUtils;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
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.conn.ClientConnectionManager;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.scheme.SchemeRegistry;
import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.alibaba.fastjson.JSONObject;

/**
 * ClassName:HttpsUtil
 * 
 * 模拟https请求
 * 
 * @author pengyh
 * @version 1.0
 * @since v1.0
 * @Date 14-六月-14 上午 11:11
 */
public class HttpsUtil {
	
	private static final Logger LOG = LoggerFactory.getLogger(HttpsUtil.class);

	public static DefaultHttpClient getHttpsClient() {
		try {
			SSLContext ctx = SSLContext.getInstance("TLS");
			X509TrustManager tm = new X509TrustManager() {

				@Override
				public void checkClientTrusted(
						java.security.cert.X509Certificate[] chain,
						String authType)
						throws java.security.cert.CertificateException {
				}

				@Override
				public void checkServerTrusted(
						java.security.cert.X509Certificate[] chain,
						String authType)
						throws java.security.cert.CertificateException {
				}

				@Override
				public java.security.cert.X509Certificate[] getAcceptedIssuers() {
					return null;
				}

			};
			DefaultHttpClient client = new DefaultHttpClient();
			ctx.init(null, new TrustManager[] { tm }, null);
			SSLSocketFactory ssf = new SSLSocketFactory(ctx);

			ClientConnectionManager ccm = client.getConnectionManager();
			SchemeRegistry sr = ccm.getSchemeRegistry();
			// 设置要使用的端口,默认是443
			sr.register(new Scheme("https", 443, ssf));
			return client;
		} catch (Exception ex) {
			LOG.error("", ex);
			return null;
		}
	}

	/**
	 * 
	 * @param url
	 * @param params
	 * @return
	 * @author asflex
	 * @throws UnsupportedEncodingException
	 * @date 2014-3-28下午7:24:02
	 * @modify 2014-3-28下午7:24:02
	 */
	@SuppressWarnings("unchecked")
	public static String post(String url, Map<String, String> params)
			throws UnsupportedEncodingException {
		DefaultHttpClient httpClient = getHttpsClient();
		HttpPost post = new HttpPost(url);
		List data = null;
		if (params != null) {
			data = new ArrayList(params.size());
			for (Map.Entry entry : params.entrySet()) {
				data.add(new BasicNameValuePair((String) entry.getKey(),
						(String) entry.getValue()));
			}
			UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(data,
					"UTF-8");
			post.setEntity(formEntity);
		}
		LOG.info("http post---{}", getUrlRequestInfo(url, params));
		HttpResponse response;
		try {
			response = httpClient.execute(post);
			String result = EntityUtils.toString(response.getEntity());
			return result;
		} catch (ClientProtocolException e) {
			LOG.error("", e);
		} catch (IOException e) {
			LOG.error("", e);
		} finally {
			httpClient.getConnectionManager().shutdown();
		}
		return null;
	}

	/**
	 * 上传图片文件
	 * @param url   请求url
	 * @param savedDir  保存文件
	 * @param saveFileName  文件名称
	 * @return  status==0  成功  status==-1  失败  msg失败原因  data成功返回的数据
	 */
	public static JSONObject postImg(String url, File savedDir,
			String saveFileName) {

		HttpClient client = new HttpClient();
		// 返回结果集
		JSONObject resJson = new JSONObject();

		try {
			// 判断白村文件存不存在
			if (!savedDir.exists()) {
				resJson.put("status", "-1");
				resJson.put("msg", "保存文件不存在");
				return resJson;
			}
			PostMethod postMethod = new PostMethod(url);

			// FilePart:用来上传文件的类
			FilePart filePart = new FilePart("img", new File(savedDir,
					saveFileName));
			Part[] parts = { filePart };
			// 对于MIME类型的请求,httpclient建议全用MulitPartRequestEntity进行包装
			MultipartRequestEntity mre = new MultipartRequestEntity(parts,
					postMethod.getParams());
			postMethod.setRequestEntity(mre);

			// 执行请求,返回状态码
			int status = client.executeMethod(postMethod);

			if (status == HttpStatus.SC_OK) {
				LOG.info("上传到易信服务器请求成功,返回信息:"
						+ postMethod.getResponseBodyAsString());
				String result = postMethod.getResponseBodyAsString();
				if (result != null && !result.trim().equals("")) {
					// 解析返回信息
					resJson = JSONObject.parseObject(result);
					String code = resJson.get("errcode").toString(); // 对方接口请求返回结果:0成功
																		// 其余失败
					if (code != null && code.trim().equals("0")) {
						LOG.info("上传成功。返回信息:"
								+ postMethod.getResponseBodyAsString());
						resJson.put("status", "0");
						return resJson;
					} else {
						LOG.info("上传失败。返回信息:" + resJson.get("msg").toString());
						resJson.put("status", "-1");
						return resJson;
					}
				}
			} else {
				LOG.info("请求易信接口上传图片,请求失败。");
				resJson.put("status", "-1");
				resJson.put("msg", "上传图片,请求失败。");
				return resJson;
			}
		} catch (Exception e) {
			resJson.put("status", "-1");
			resJson.put("msg", "系统异常");
			return resJson;
		}
		return null;
	}

	public static String get(String url) throws UnsupportedEncodingException {
		DefaultHttpClient httpClient = getHttpsClient();
		HttpGet get = new HttpGet(url);
		// LOG.info("http post---{}", getUrlRequestInfo(url, params));
		HttpResponse response;
		try {
			response = httpClient.execute(get);
			String result = EntityUtils.toString(response.getEntity());
			return result;
		} catch (ClientProtocolException e) {
			LOG.error("", e);
		} catch (IOException e) {
			LOG.error("", e);
		} finally {
			httpClient.getConnectionManager().shutdown();
		}
		return null;
	}

	/**
	 * 生成post请求时的记录
	 * 
	 * @param url
	 * @param params
	 * @return
	 * @author asflex
	 * @date 2014-3-28下午7:23:33
	 * @modify 2014-3-28下午7:23:33
	 */
	public static String getUrlRequestInfo(String url,
			Map<String, String> params) {

		StringBuilder paramStr = new StringBuilder();
		if (!params.isEmpty()) {
			@SuppressWarnings("unused")
			Iterator<Entry<String, String>> iterator = params.entrySet()
					.iterator();
			// Joiner.on("&").appendTo(paramStr, iterator);
		}
		return String
				.format("curl -d '%s' '%s'", StringUtils.trimToEmpty(paramStr
						.toString()), StringUtils.trimToEmpty(url));
	}

	/**
	 * 参数转换
	 * 
	 * @param params
	 * @return
	 * @author asflex
	 * @date 2014-3-28下午7:23:05
	 * @modify 2014-3-28下午7:23:05
	 */
	public static HttpEntity map2UrlEncodedFormEntity(Map<String, String> params) {
		if (!params.isEmpty()) {
			Iterator<Entry<String, String>> iterator = params.entrySet()
					.iterator();
			List<NameValuePair> nvps = new ArrayList<NameValuePair>();
			while (iterator.hasNext()) {
				Entry<String, String> entry = iterator.next();
				nvps.add(new BasicNameValuePair(StringUtils.trimToEmpty(entry
						.getKey()), StringUtils.trimToEmpty(entry.getValue())));
			}
			try {
				return new UrlEncodedFormEntity(nvps);
			} catch (UnsupportedEncodingException e) {
				LOG.error("", e);
			}
		}
		return null;
	}

	// public static void main(String[] args) {
	// Map<String, String> params = new HashMap<String, String>();
	// params.put("code", "C0001");
	// params.put("openid", "b29f7943b2c9a504c3061cd18d77b7a0");
	// params.put("content", "你好");
	// System.out.println(getUrlRequestInfo("", params));
	//
	// try {
	// System.out.println(post(
	// "https://campus.yixin.im/api/private/msg/simpleSend.do",
	// params));
	// System.out
	// .println(get("https://campus.yixin.im/api/private/user/mInfo.do?code=C0001&mobile=18950426152"));
	//
	// System.out.println(get("http://campus.yixin.im/api/private/queryNameCodeList.do"));
	// } catch (UnsupportedEncodingException e) {
	//
	// // TODO Auto-generated catch block
	// e.printStackTrace();
	//
	// }
	// }
}




  


  
分享到:
评论

相关推荐

    java实现读取证书访问https接口

    本篇文章将深入探讨如何在Java中实现读取不同格式(如cer、der、crt)的证书,以及如何使用这些证书访问HTTPS接口并获取返回数据。 首先,我们需要了解证书的基本概念。证书通常包含了公钥和一些身份信息,由受信任...

    Java Https请求,跳过证书,直接访问

    "TestHttp"可能是一个测试HTTP请求的Java类或文件,你可以使用它来测试上述代码片段是否有效。 总之,理解HTTPS的工作原理以及如何在Java中安全地或不安全地实现HTTPS请求是非常关键的。在开发过程中,合理使用这些...

    Https请求工具类,Java实现http请求,https请求

    本篇文章将详细介绍如何使用Java语言实现Http和Https请求的工具类,包括如何建立Https连接、如何实现Post请求、如何处理SSL验证等内容。 在Java中,使用HttpURLConnection类可以实现Http和Https请求,但是对于...

    http和WebService 调用接口Java代码demo

    本文将深入探讨如何使用Java进行HTTP调用和WebService接口的实现,以及如何配置代理以适应内网访问。我们将主要围绕以下四个核心概念展开:HttpClient、WebService、Java接口调用以及代理配置。 HttpClient是Apache...

    JAVA利用HttpClient进行HTTPS接口调用的方法

    Java中使用HttpClient进行HTTPS接口调用的方法是通过继承DefaultHttpClient类,忽略证书校验过程。首先,创建一个SSLClient类,继承DefaultHttpClient类,并在构造函数中初始化SSLContext和TrustManager。然后,使用...

    java client访问https server(客户端代码、服务器端配置)

    Java客户端访问HTTPS服务器涉及到的是网络安全通信中的...总之,Java客户端访问HTTPS服务器涉及了SSL/TLS协议的使用、证书和密钥的管理、以及相应的Java代码配置。理解这些概念和技术对于构建安全的网络服务至关重要。

    Java发https请求证书问题

    - 以上两行代码的作用是告诉 Java 虚拟机信任 `tomcat.keystore` 中的证书,并使用指定的密码访问密钥库。 5. **发送 HTTPS 请求**: - 使用上述配置后的环境发送 HTTPS 请求,此时应该能正确地与服务器建立安全...

    基于Java微信接口

    你需要能够编写和理解Java代码,以便构建微信接口的客户端和服务端逻辑。 2. **微信开发者平台**:注册并创建一个微信开发者账号,获取AppID和AppSecret,这是接入微信接口的基础。你需要了解如何在微信开发者平台...

    百度搜索接口java后台

    以下是一个简单的Java代码示例,演示如何使用HttpURLConnection对接百度搜索接口: ```java import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java...

    yolov3的java调用示例

    通过java代码使用yolov3的示例代码,yolov3是先进的图片内物品识别的神经网络。由于目前通过jvm运行神经网络效率较低,项目的示例意义大于实用意义。 此项目参考了yolov2的java项目:...

    java源码包---java 源码 大量 实例

     Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。  设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang...

    【精品】java调用短信外网接口服务端和客户端代码

    本资源“【精品】java调用短信外网接口服务端和客户端代码”提供了完整的Java实现,帮助开发者快速理解和集成短信发送功能。这个压缩包包含了源码和接口文档,使得对Java有一定了解的开发者能够迅速上手。 首先,...

    Java连接实现代码 (JAVA代码和VC代码 已更正)

    在Java编程语言中,连接实现通常指...VC代码可能与Java代码配合,例如,Java负责网络通信,而VC代码处理数据解析或其他特定功能。如果你需要更具体的代码实现或对某个知识点有深入理解的需求,请提供更多的上下文信息。

    Uniapp调用java代码-使用Android Studio,将Java代码打包成uniapp可以调用的aar文件

    【标题】: "在 Uniapp 中调用 Java 代码:使用 Android Studio 打包 AAR 文件教程" ...这种方法允许你在 Uniapp 中利用 Java 的强大功能,解决纯前端无法处理的复杂问题,如访问硬件设备、优化性能或使用特定的 SDK。

    java短信接口代码示例

    Java短信接口代码示例主要涉及的是在Java编程环境中如何与短信服务提供商进行通信,以便实现发送短信、尤其是发送验证码的功能。这个示例通常包括以下几个关键知识点: 1. **HTTP请求库**:Java中常见的用于发送...

    java 访问 wcf 示例(使用的HttpClient)

    Java访问WCF服务是跨平台...以上就是使用Java HttpClient访问WCF服务的基本知识,实际应用中可能需要根据具体服务接口和需求进行调整。文件"java4Wcf"可能包含完整的示例代码或更详细的步骤,建议结合该文件深入学习。

    http-->https后端Java接口spring boot项目配置文件及生成证书的方法.7z

    在Spring Boot中,如果你的应用需要SSH访问,可以使用Spring Cloud Config Server或JGit等工具实现配置管理。 总结起来,将Spring Boot应用从HTTP切换到HTTPS,主要涉及证书的生成、配置Spring Boot应用、处理...

    使用Java Web服务构建SOA源代码

    JNDI提供了一个接口,使得Java应用程序可以访问命名和目录服务,帮助定位Web服务。 6. **Tomcat或其他应用服务器**:Java Web服务通常部署在应用服务器上,如Apache Tomcat,它提供了运行和管理Web服务的环境。 7....

    java 企业人力管理资源源代码

    可能使用了JDBC(Java Database Connectivity)接口来实现数据库连接和操作。 对于Eclipse的提及,这意味着源码是为Eclipse集成开发环境(IDE)优化的,开发者可以直接导入项目并运行。Eclipse提供了丰富的开发工具...

Global site tag (gtag.js) - Google Analytics