<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中实现读取不同格式(如cer、der、crt)的证书,以及如何使用这些证书访问HTTPS接口并获取返回数据。 首先,我们需要了解证书的基本概念。证书通常包含了公钥和一些身份信息,由受信任...
"TestHttp"可能是一个测试HTTP请求的Java类或文件,你可以使用它来测试上述代码片段是否有效。 总之,理解HTTPS的工作原理以及如何在Java中安全地或不安全地实现HTTPS请求是非常关键的。在开发过程中,合理使用这些...
本篇文章将详细介绍如何使用Java语言实现Http和Https请求的工具类,包括如何建立Https连接、如何实现Post请求、如何处理SSL验证等内容。 在Java中,使用HttpURLConnection类可以实现Http和Https请求,但是对于...
本文将深入探讨如何使用Java进行HTTP调用和WebService接口的实现,以及如何配置代理以适应内网访问。我们将主要围绕以下四个核心概念展开:HttpClient、WebService、Java接口调用以及代理配置。 HttpClient是Apache...
Java中使用HttpClient进行HTTPS接口调用的方法是通过继承DefaultHttpClient类,忽略证书校验过程。首先,创建一个SSLClient类,继承DefaultHttpClient类,并在构造函数中初始化SSLContext和TrustManager。然后,使用...
Java客户端访问HTTPS服务器涉及到的是网络安全通信中的...总之,Java客户端访问HTTPS服务器涉及了SSL/TLS协议的使用、证书和密钥的管理、以及相应的Java代码配置。理解这些概念和技术对于构建安全的网络服务至关重要。
- 以上两行代码的作用是告诉 Java 虚拟机信任 `tomcat.keystore` 中的证书,并使用指定的密码访问密钥库。 5. **发送 HTTPS 请求**: - 使用上述配置后的环境发送 HTTPS 请求,此时应该能正确地与服务器建立安全...
你需要能够编写和理解Java代码,以便构建微信接口的客户端和服务端逻辑。 2. **微信开发者平台**:注册并创建一个微信开发者账号,获取AppID和AppSecret,这是接入微信接口的基础。你需要了解如何在微信开发者平台...
以下是一个简单的Java代码示例,演示如何使用HttpURLConnection对接百度搜索接口: ```java import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java...
通过java代码使用yolov3的示例代码,yolov3是先进的图片内物品识别的神经网络。由于目前通过jvm运行神经网络效率较低,项目的示例意义大于实用意义。 此项目参考了yolov2的java项目:...
Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。 设定字符串为“张三,你好,我是李四” 产生张三的密钥对(keyPairZhang) 张三生成公钥(publicKeyZhang...
本资源“【精品】java调用短信外网接口服务端和客户端代码”提供了完整的Java实现,帮助开发者快速理解和集成短信发送功能。这个压缩包包含了源码和接口文档,使得对Java有一定了解的开发者能够迅速上手。 首先,...
在Java编程语言中,连接实现通常指...VC代码可能与Java代码配合,例如,Java负责网络通信,而VC代码处理数据解析或其他特定功能。如果你需要更具体的代码实现或对某个知识点有深入理解的需求,请提供更多的上下文信息。
【标题】: "在 Uniapp 中调用 Java 代码:使用 Android Studio 打包 AAR 文件教程" ...这种方法允许你在 Uniapp 中利用 Java 的强大功能,解决纯前端无法处理的复杂问题,如访问硬件设备、优化性能或使用特定的 SDK。
Java短信接口代码示例主要涉及的是在Java编程环境中如何与短信服务提供商进行通信,以便实现发送短信、尤其是发送验证码的功能。这个示例通常包括以下几个关键知识点: 1. **HTTP请求库**:Java中常见的用于发送...
Java访问WCF服务是跨平台...以上就是使用Java HttpClient访问WCF服务的基本知识,实际应用中可能需要根据具体服务接口和需求进行调整。文件"java4Wcf"可能包含完整的示例代码或更详细的步骤,建议结合该文件深入学习。
在Spring Boot中,如果你的应用需要SSH访问,可以使用Spring Cloud Config Server或JGit等工具实现配置管理。 总结起来,将Spring Boot应用从HTTP切换到HTTPS,主要涉及证书的生成、配置Spring Boot应用、处理...
JNDI提供了一个接口,使得Java应用程序可以访问命名和目录服务,帮助定位Web服务。 6. **Tomcat或其他应用服务器**:Java Web服务通常部署在应用服务器上,如Apache Tomcat,它提供了运行和管理Web服务的环境。 7....
可能使用了JDBC(Java Database Connectivity)接口来实现数据库连接和操作。 对于Eclipse的提及,这意味着源码是为Eclipse集成开发环境(IDE)优化的,开发者可以直接导入项目并运行。Eclipse提供了丰富的开发工具...