IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> oracle数据库调用外部https接口 -> 正文阅读

[大数据]oracle数据库调用外部https接口

1.在数据库执行下面脚本创建java类

create or replace and compile java source named cux_http_utl as
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;

import oracle.jdbc.OracleConnection;
import oracle.jdbc.OracleDriver;
import java.io.Writer;
import java.sql.SQLException;
import java.net.URL;

import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;

import java.sql.Clob;
import java.sql.Connection;
import java.sql.DriverManager;

import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;

import oracle.sql.CLOB;


public class CUX_HTTP_UTL {
    static class TrustAllTrustManager implements TrustManager, X509TrustManager {

        @Override
        public void checkClientTrusted(X509Certificate[] x509Certificate, String string) throws CertificateException {
            return;
        }

        @Override
        public void checkServerTrusted(X509Certificate[] x509Certificate, String string) throws CertificateException {
            return;
        }

        @Override
        public X509Certificate[] getAcceptedIssuers() {
            return null;
        }
    }
    static TrustManager[] tm = { new TrustAllTrustManager() };
   private static OracleConnection getConnection() throws SQLException {
        return (OracleConnection) new OracleDriver().defaultConnection();
    }
     private static CLOB stringToClob(String input) throws Exception {
        OracleConnection conn = null;
        Writer writer = null;
        CLOB clob = null;
        try {
            conn = getConnection();
            clob = CLOB.createTemporary(conn, false, CLOB.DURATION_SESSION);
            writer = clob.setCharacterStream(0L);
            writer.write(input);
            return clob;
        } catch (Exception e) {
            throw e;
        } finally {
            if (writer != null) {
                try {
                    writer.close();
                } catch (Exception e) {

                }
            }

            if (clob != null) {
                try {
                    clob.close();
                } catch (Exception e) {

                }
            }

            if (conn != null) {
                try {
                    conn.close();
                } catch (Exception e) {

                }
            }
        }
    }
    
     private static String clobToString(CLOB input) throws Exception {
        BufferedReader bufferedReader = null;
        StringBuffer buf = new StringBuffer("");
        String line = "";
        try {
            bufferedReader = new BufferedReader(input.getCharacterStream());
            while ((line = bufferedReader.readLine()) != null) {
                buf.append(line);
            }
            return buf.toString();
        } catch (Exception e) {
            throw e;
        } finally {
            if (bufferedReader != null) {
                try {
                    bufferedReader.close();
                } catch (Exception e) {
                }
            }
        }
    }
    public static CLOB httpsRequest(String requestUrl, String requestMethod, String contentType,
                                    CLOB inputClob) throws Exception {
        String str = "";
        //  try {
        String inputStr = "";
        if (inputClob != null) 
          inputStr = clobToString(inputClob);
        StringBuffer buffer = null;
        InputStream is = null;
        InputStreamReader isr = null;
        BufferedReader br = null;

        HostnameVerifier hv = new HostnameVerifier() {
            @Override
            public boolean verify(String urlHostName, SSLSession session) {
                return true;
            }
        };

        SSLContext sslContext = SSLContext.getInstance("SSL");
        sslContext.init(null, tm, null);
        HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());

        HttpsURLConnection.setDefaultHostnameVerifier(hv);
        URL url = new URL(requestUrl);
        HttpsURLConnection conn = (HttpsURLConnection)url.openConnection();
        conn.setDoOutput(true);
        conn.setDoInput(true);
        conn.setUseCaches(false);
        conn.setRequestMethod(requestMethod);
        if (contentType != null) {
            conn.setRequestProperty("Content-Type", contentType);
        }
        conn.connect();
        if (null != inputStr) {
            OutputStream os = conn.getOutputStream();
            os.write(inputStr.getBytes("utf-8"));
            os.close();
        }
        if (conn.getResponseCode() != 200) {
            throw new RuntimeException("HTTP GET Request Failed with Error code : " + conn.getResponseCode());
        }
        is = conn.getInputStream();
        isr = new InputStreamReader(is, "utf-8");
        br = new BufferedReader(isr);
        buffer = new StringBuffer();
        String line = null;
        while ((line = br.readLine()) != null) {
            buffer.append(line);
        }
        br.close();
        conn.disconnect();
        if (buffer != null & !"".equals(buffer.toString()))
            str = buffer.toString();
        else
            str = "1";
        CLOB clob; 
        clob =stringToClob( str);
        return clob;
        /*  } catch (Exception e) {
      e.printStackTrace();
      return "ERROR:" + e.getMessage();
    } */
    }
 
}

2.在数据库创建函数

create or replace function cux_https_request(requestUrl    VARCHAR2,
                                             requestMethod VARCHAR2,
                                             contentType   VARCHAR2,
                                             inputClob     Clob)
  return Clob as
  language java name 'CUX_HTTP_UTL.httpsRequest(java.lang.String,java.lang.String,java.lang.String,oracle.sql.CLOB ) return oracle.sql.CLOB';

3.调用函数即可


```sql
 select Cux_https_request(requesturl    => 'https://opencs.517la.com/api/token/getToken',
                            requestmethod => 'POST',
                            contenttype   => 'application/json',
                            inputclob     => '{
    "data": {
      "appid": "string",
      "appsecret": "string"
    },
    "requestid": "20180616112955089",
    "version": "0.0.1"
  }')
    from dual;

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-04-01 00:08:39  更:2022-04-01 00:11:31 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 4:31:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码