最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中的原生post請求方式

 更新時間:2023年10月07日 08:38:02   作者:沙皮狗你不懂  
這篇文章主要介紹了Java中的原生post請求方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

1.post請求方式(有參數(shù))

因為請求地址為https 需要配置不驗證證書

/**
     * post請求方式(有參數(shù)) 因為請求地址為https 需要配置不驗證證書
     */
    public static String post(String strUrl, Map<String, Object> params) {
        try {
            // 添加信任主機
            trustAllHosts();
            // 創(chuàng)建連接
            URL url = new URL(strUrl);
            HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
            // 不驗證配置
            connection.setHostnameVerifier(DO_NOT_VERIFY);
            // 設置請求方式
            connection.setRequestMethod("POST");
            connection.setRequestProperty("accept","*/*");
            connection.setRequestProperty("connection","Keep-Alive");
            connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
            // 設置發(fā)送數(shù)據的格式json
            connection.setRequestProperty("Content-Type","application/json");
            // 設置token appkey
            connection.setRequestProperty("apikey","Z31jdnojkYFg3z3mXourHjP5gmpg9Ms9");
            // 設置接收數(shù)據的格式json
            connection.setRequestProperty("Accept", "application/json");
            connection.setDoOutput(true);
            connection.setDoInput(true);
            connection.setUseCaches(false);
            connection.setInstanceFollowRedirects(true);
            OutputStreamWriter out = new OutputStreamWriter(connection.getOutputStream(), StandardCharsets.UTF_8);
            // 阿里巴巴的fastjson
            out.append(JSON.toJSONString(params));
            out.flush();
            out.close();
            // 請求成功
            int responseCode = connection.getResponseCode();
            if (responseCode == 200) {
                // 讀取響應
                StringBuffer respResult = new StringBuffer();
                BufferedReader reader = new BufferedReader(
                        new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8));
                String line;
                while ((line = reader.readLine()) != null) {
                    respResult.append(line);
                }
                reader.close();
                log.info("Req Success{}" + respResult.toString());
                return respResult.toString();
            }
        } catch (Exception e) {
            log.info("Req Error{}" + e.getMessage());
            return e.getMessage();
        }
        // 請求失敗
        return null;
    }
/**
     * 不驗證配置
     */
    private final static HostnameVerifier DO_NOT_VERIFY = (hostname, session) -> true;
    /**
     * 添加信任主機
     */
    private static void trustAllHosts() {
        // 創(chuàng)建不驗證證書鏈的信任管理器 這里使用的是x509證書 此處的MyX509TrustManager()為實現(xiàn)重寫方法
        TrustManager[] trustAllCerts = new TrustManager[]{new MyX509TrustManager() {
            @Override
            public java.security.cert.X509Certificate[] getAcceptedIssuers() {
                return new java.security.cert.X509Certificate[]{};
            }
            @Override
            public void checkClientTrusted(X509Certificate[] chain, String authType) {}
            @Override
            public void checkServerTrusted(X509Certificate[] chain, String authType) {}
        }};
        // 安裝所有信任的信任管理器
        try {
            SSLContext sc = SSLContext.getInstance("TLS");
            sc.init(null, trustAllCerts, new java.security.SecureRandom());
            //HttpsURLConnection通過SSLSocket來建立與HTTPS的安全連接,SSLSocket對象是由SSLSocketFactory生成的。
            HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

2.post請求方式(無參數(shù))

/**
     * post請求方式(無參數(shù))
     */
    public static String post(String strUrl) {
        try {
            // 創(chuàng)建連接
            URL url = new URL(strUrl);
            HttpURLConnection connection = (HttpsURLConnection) url.openConnection();
            connection.setDoOutput(true);
            connection.setDoInput(true);
            connection.setUseCaches(false);
            connection.setInstanceFollowRedirects(true);
            // 設置請求方式
            connection.setRequestMethod("POST");
            connection.setRequestProperty("Connection", "keep-alive");
            // 設置接收數(shù)據的格式json
            connection.setRequestProperty("Accept", "application/json");
            // connection.setRequestProperty("Content-Type", "application/json"); // 設置發(fā)送數(shù)據的格式json
            connection.connect();
            // 獲取響應碼
            int code = connection.getResponseCode();
            // 請求成功
            if (code == 200) {
                // 讀取響應
                StringBuffer respResult = new StringBuffer();
                BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), StandardCharsets.UTF_8));
                String line;
                while ((line = reader.readLine()) != null) {
                    respResult.append(line);
                }
                reader.close();
                log.info("Req Success{}" + respResult.toString());
                return respResult.toString();
            }
        } catch (Exception e) {
            log.info("Req Error{}" + e.getMessage());
            return e.getMessage();
        }
        // 請求失敗
        return null;
    }
import java.security.cert.X509Certificate;
import javax.net.ssl.X509TrustManager;
/**
 * 重寫的X509TrustManager類
 */
public class MyX509TrustManager implements X509TrustManager { 
    @Override
    public void checkClientTrusted(X509Certificate[] chain, String authType) {}
    @Override
    public void checkServerTrusted(X509Certificate[] chain, String authType) {}
    @Override
    public X509Certificate[] getAcceptedIssuers() {
        return null; 
    } 
}

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • java中ZXing 生成、解析二維碼圖片的小示例

    java中ZXing 生成、解析二維碼圖片的小示例

    ZXing 是一個開源 Java 類庫用于解析多種格式的 1D/2D 條形碼,這篇文章主要介紹了java中ZXing 生成、解析二維碼圖片的小示例 ,有興趣的可以了解一下。
    2017-01-01
  • Java Servlet中Response對象的使用方法

    Java Servlet中Response對象的使用方法

    本文介紹了Java Servlet中Response對象的使用方法,包括設置響應頭、設置響應編碼、向客戶端發(fā)送數(shù)據、重定向等操作,同時介紹了常用的響應狀態(tài)碼和響應類型,幫助讀者更好地理解和掌握Servlet中Response對象的用法
    2023-05-05
  • Java設計模式之組合模式(Composite模式)介紹

    Java設計模式之組合模式(Composite模式)介紹

    這篇文章主要介紹了Java設計模式之組合模式(Composite模式)介紹,Composite定義:將對象以樹形結構組織起來,以達成“部分-整體” 的層次結構,使得客戶端對單個對象和組合對象的使用具有一致性,需要的朋友可以參考下
    2015-03-03
  • Spring 依賴注入實現(xiàn)示例

    Spring 依賴注入實現(xiàn)示例

    這篇文章主要介紹了Spring 依賴注入實現(xiàn)示例的相關資料,幫助大家更好的理解和使用spring框架,感興趣的朋友可以了解下
    2020-11-11
  • Java 多線程傳值的四種方法

    Java 多線程傳值的四種方法

    這篇文章主要介紹了Java 多線程傳值的四種方法,幫助大家更好的理解和學習Java,感興趣的朋友可以了解下
    2020-09-09
  • Spring動態(tài)修改bean屬性配置key的幾種方法

    Spring動態(tài)修改bean屬性配置key的幾種方法

    在Spring應用開發(fā)中,我們經常需要從配置文件讀取屬性值并注入到bean中,但是你有沒有遇到過這種情況:某個bean的屬性需要根據運行環(huán)境動態(tài)切換配置key? 比如測試環(huán)境和生產環(huán)境使用不同的數(shù)據庫配置前綴?今天我們就來探討這個看似簡單卻經常讓人頭疼的問題
    2025-04-04
  • Mybatis日志配置方式(slf4j、log4j、log4j2)

    Mybatis日志配置方式(slf4j、log4j、log4j2)

    這篇文章主要介紹了Mybatis日志配置方式(slf4j、log4j、log4j2),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • 幾種常見mybatis分頁的實現(xiàn)方式

    幾種常見mybatis分頁的實現(xiàn)方式

    這篇文章主要介紹了幾種常見mybatis分頁的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • SpringBoot利用可視化服務管理腳本部署應用

    SpringBoot利用可視化服務管理腳本部署應用

    在SpringBoot應用的生產環(huán)境部署中,傳統(tǒng)的手動啟停服務方式不僅效率低下,還容易出錯,所以本文將分享一個功能強大的可視化服務管理腳本,讓SpringBoot應用的部署和運維變得簡單高效
    2025-08-08
  • Spring中Properties的配置方式

    Spring中Properties的配置方式

    這篇文章主要介紹了Spring中Properties的配置方式,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02

最新評論

怀来县| 孝感市| 桂东县| 江城| 邵东县| 宁乡县| 宜春市| 延寿县| 安顺市| 洛川县| 莆田市| 武冈市| 长治县| 长治市| 曲沃县| 洪江市| 安龙县| 偏关县| 扬州市| 东光县| 七台河市| 哈密市| 慈溪市| 沙洋县| 清苑县| 洛隆县| 邳州市| 玛多县| 尚志市| 玉树县| 花莲市| 新宁县| 信阳市| 贵定县| 永福县| 公安县| 甘洛县| 白玉县| 福清市| 白朗县| 德庆县|