package com.wl.webservice;

import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.SocketException;
import java.net.SocketTimeoutException;
import java.net.URL;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate; import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.X509TrustManager; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.ricoh.rapp.ezcx.iwbservice.util.Constant;
import com.ricoh.rapp.ezcx.iwbservice.util.Utils; public class HttpsRequest {   private final Logger logger = LoggerFactory.getLogger(HttpsRequest.class); /**
* 处理https GET/POST请求
* @param requestUrl 请求地址
* @param requestMethod 请求方法
* @param requestStr 请求参数
* @return
*/
  public JSONObject httpsRequest(String requestUrl, String requestMethod, String requestStr) {
    logger.info("req---->:" + requestMethod + requestStr);
    HttpsURLConnection httpsConnection = null;
    try {
      // 创建SSLContext
      SSLContext sslContext = SSLContext.getInstance("SSL");
      TrustManager[] tm = { new TrustManager() };
      // 初始化
      sslContext.init(null, tm, new java.security.SecureRandom());       // 获取SSLSocketFactory对象
      SSLSocketFactory ssf = sslContext.getSocketFactory();
      HostnameVerifier HostnameVerifier = new HostnameVerifier() {
        @Override
        public boolean verify(String var1, SSLSession var2) {
          return true;
        }       };       URL url = new URL(requestUrl);
      httpsConnection = (HttpsURLConnection) url.openConnection();
      httpsConnection.setDoOutput(false);
      httpsConnection.setDoInput(true);
      httpsConnection.setConnectTimeout("3 * 1000");
      httpsConnection.setReadTimeout("15 * 1000");
      httpsConnection.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
      httpsConnection.setRequestProperty("Charset", "UTF-8");
      httpsConnection.setRequestProperty("Authorization", "Basic aXdidXNlcjp0ZXN0MDAwMA==");
      httpsConnection.setRequestProperty("User-Agent", "Client identifier");
      httpsConnection.setRequestMethod("GET");
      /*
      * httpsConnection.setUseCaches(false);
      * httpsConnection.setRequestMethod(requestMethod);
      */
      // 设置当前实例使用的SSLSoctetFactory
      httpsConnection.setSSLSocketFactory(ssf);
      httpsConnection.setHostnameVerifier(HostnameVerifier);
      httpsConnection.connect();
      // 往服务器端写内容
      // 读取服务器端返回的内容
      InputStream inputStream = httpsConnection.getInputStream();
      if (httpsConnection.getResponseCode() != HttpURLConnection.HTTP_OK) {
        logger.error("connect ezcs service failed: " + httpsConnection.getResponseCode());
        JSONObject responseJson = new JSONObject();
        responseJson.put(ResponseKey.KEY_RESULT,
          com.ricoh.rapp.unifiedPlatform.dsdkService.constant.HttpConstant.ResultCode.ERROR_SERVER_HTTP_ERROR);
        return responseJson;
      }
      String response = Utils.convertStreamToString(inputStream, Constant.ENCODING_UTF_8);
      logger.debug("response from ezcs service: " + response);
      JSONObject responseJson = JSON.parseObject(response);
      return responseJson;
    } catch (Exception e) {
      e.printStackTrace();
      logger.debug("connect local ezcs service exception: " + e.getMessage());
      JSONObject responseJson = new JSONObject();
      if (e instanceof SocketTimeoutException || e instanceof SocketException) {
        responseJson.put(ResponseKey.KEY_RESULT,
          com.ricoh.rapp.unifiedPlatform.dsdkService.constant.HttpConstant.ResultCode.ERROR_SERVER_HTTP_ERROR);
      } else {
        responseJson.put(ResponseKey.KEY_RESULT,
          com.ricoh.rapp.unifiedPlatform.dsdkService.constant.HttpConstant.ResultCode.ERROR_INNER_ERROR);
      }
     return responseJson;
    } finally {
      if (httpsConnection != null) {
        httpsConnection.disconnect();
      }
    }
  }   class TrustManager implements X509TrustManager {     @Override
    public void checkClientTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {     }       @Override
    public void checkServerTrusted(X509Certificate[] arg0, String arg1) throws CertificateException {     }     @Override
    public X509Certificate[] getAcceptedIssuers() {
      return new X509Certificate[] {};
    }   }   public static class ResponseKey {
    public static final String KEY_RESULT = "result";
    public static final String KEY_REASON = "reason";
    public static final String KEY_DATA = "data";
    public static final String KEY_EXTRA = "extra";
  } }

java的https的get请求的更多相关文章

  1. java 实现https请求

    java 实现https请求 JSSE是一个SSL和TLS的纯Java实现,通过JSSE可以很容易地编程实现对HTTPS站点的访问.但是,如果该站点的证书未经权威机构的验证,JSSE将拒绝信任该证书从 ...

  2. Java发送HTTPS请求

    前言 上篇文章介绍了 java 发送 http 请求,大家都知道发送http是不安全的 .我也是由于对接了其他企业后总结了一套发送 https的工具.大家网上找方法很多的,但是可不是你粘过来就能用啊, ...

  3. Java 发送 Https 请求工具类 (兼容http)

    依赖 jsoup-1.11.3.jar <dependency> <groupId>org.jsoup</groupId> <artifactId>js ...

  4. java 模拟浏览器发送post请求

    java使用URLConnection发送post请求 /** * 向指定 URL 发送POST方法的请求 * * @param url * 发送请求的 URL * @param param * 请求 ...

  5. HTTPS那些事 用java实现HTTPS工作原理

    HTTPS那些事 用java实现HTTPS工作原理 博客分类: java历险   今天被问到关于https原理的问题,结果由于知识掌握不牢靠,停留于表面,很多细节都无法回答清楚,于是决定把https的 ...

  6. Java访问HTTPS时证书验证问题

    为了尽可能避免安全问题,公司的很多系统服务都逐步https化,虽然开始过程会遇到各种问题,但趋势不改.最完美的https应用是能实现双向认证,客户端用私钥签名用服务端公钥加密,服务端用私钥签名客户端都 ...

  7. java实现https免证书认证

    java实现https免证书认证   解决方法: 1.下载两个包,httpclient-4.2.jar和httpcore-4.2.jar,复制以下代码就可使用. 2.调用类代码: String htt ...

  8. 【SpringBoot】 Java中如何封装Http请求,以及JSON多层嵌套解析

    前言 本文中的内容其实严格来说不算springboot里面的特性,属于JAVA基础,只是我在项目中遇到了,特归纳总结一下. HTTP请求封装 目前JAVA对于HTTP封装主要有三种方式: 1. JAV ...

  9. 如何设置Fiddler来拦截Java代码发送的HTTP请求,进行各种问题排查

    我们使用Java的RestTemplate或者Apache的HTTPClient编程的时候,经常遇到需要跟踪Java 代码发送的HTTP请求明细的情况.和javascript代码在浏览器里发送请求可以 ...

随机推荐

  1. HMS Core机器学习服务助力Zaful用户便捷购物

    Zaful是近年来发展良好的出海电商平台,主打快时尚.在洞察其用户有购买街头海报.生活中同款衣物的需求后,Zaful联合HMS Core机器学习服务打造拍照购物服务.用户拍照后可在预设的商品图片库中搜 ...

  2. 利用 pip download 打包软件来提供离线安装

    文章目录 1.通过 pip download 下载安装包 2.利用 pip install --no-index 离线安装 1.通过 pip download 下载安装包 linux-oz6w:~ # ...

  3. 在超算系统上使用sbatch提交MXNet分布式训练任务

    在超算系统上运行MXNet分布式训练任务时,面临着一个IP地址相关的问题.我们在提交MXNet的分布式任务时,需要知道各个GPU节点的IP地址,把这些IP地址放到一个hosts文件中,以供分布式训练使 ...

  4. MySQL架构原理之运行机制

    所谓运行机制即MySQL内部就如生产车间如何进行生产的.如下图: 1.建立连接,通过客户端/服务器通信协议与MySQL建立连接.MySQL客户端与服务端的通信方式是"半双工".对于 ...

  5. tip6:idea 开发工具使用

    使用idea开发工具过程中,各种个性化设置或快捷方式使用汇总 1.设置默认maven为本地 2.编写代码时提供完整的参数提示信息 3.编辑器列模式 使用alt+鼠标左键,鼠标下移即可.使用版本idea ...

  6. 【Elastic-1】ELK基本概念、环境搭建、快速开始文档

    TODO 快速开始文档 SpringBoot整合ELK(Logstash收集日志.应用主动向ES写入) ELK接入Kafka 基本概念 ElasticSearch 什么是ElasticSearch? ...

  7. C# 成员访问修饰符protected internal等

    1.C#4个修饰符的权限修饰符 级别 适用成员 解释public 公开 类及类成员的修饰符 对访问成员没有级别限制private   私有 类成员的修饰符 只能在类的内部访问protected 受保护 ...

  8. MyBatis核心对象

    MyBatis 有三个基本要素: 核心接口和类 MyBatis核心配置文件(mybatis-config.xml) SQL映射文件(mapper.xml) 下面首先介绍 MyBatis 的核心接口和类 ...

  9. 2020CCPC长春F. Strange Memory

    题目大意 一棵以 \(1\) 为根的 \(n(2\leq n\leq 10^5)\) 的树,每个节点 \(i\) 有权值 \(a_{i}(1\leq a_{i}\leq 10^6)\) ,求 \(\s ...

  10. 面向对象编程(C++篇1)——引言

    目录 1. 概述 2. 详论 2.1. 类与对象 2.2. 数据类型 3. 目录 1. 概述 现代C++与最原始的版本已经差不多是两种不同的语言了.不断发展的C++标准给C++这门语言带来了更多的范式 ...