• 调用5G核心网(明文http2)


    调用5G核心网(明文http2)

    第一步,环境准备:

    1、下载alpn-boot的jar包并引入到项目中(下载地址(alpn-boot-8.1.13.v20181017.jar)

      Maven Repository: org.mortbay.jetty.alpn » alpn-boot » 8.1.13.v20181017 (mvnrepository.com))

    2、IDEA项目启动时,设置启动参数(后面为alpn-boot-8.1.13.v20181017.jar的绝对路径)

    -Xbootclasspath/p:D:\maven\repository\org\mortbay\jetty\alpn\alpn-boot\8.1.13.v20181017\alpn-boot-8.1.13.v20181017.jar

    3、JAR启动JVM时加参数java -Xbootclasspath/p:<path_to_alpn_boot_jar>

    第二步,升级okHttpClient包到4.1.0:

    <!-- http2 -->
    <dependency>
          <groupId>com.squareup.okhttp3</groupId>
          <artifactId>okhttp</artifactId>
          <version>4.1.0</version>
    </dependency>

    第三步,编写测试程序:

    package com.example.demo.util;
    
    import cn.hutool.core.util.URLUtil;
    import cn.hutool.json.JSONObject;
    import lombok.extern.slf4j.Slf4j;
    import okhttp3.Call;
    import okhttp3.Callback;
    import okhttp3.ConnectionPool;
    import okhttp3.MediaType;
    import okhttp3.OkHttpClient;
    import okhttp3.Protocol;
    import okhttp3.Request;
    import okhttp3.RequestBody;
    import okhttp3.Response;
    import org.jetbrains.annotations.NotNull;
    
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.Objects;
    import java.util.concurrent.TimeUnit;
    
    /**
     * http2工具类
     *
     * @author li.zhm
     */
    @Slf4j
    public class Http2Util {
    
        /***
         * 调用api post接口
         *
         * @author li.zhm
         * @param url
         * @param jsonObject
         * @param ntType
         * @history <author>  <time>  <version>  <desc>
         */
        public static void sendPost(String url, JSONObject jsonObject, String ntType) {
            log.info("请求post地址(转义):{}", URLUtil.encode(url, "utf-8"));
            MediaType mediaType = MediaType.parse("application/json; charset=utf-8");
            List<Protocol> protocolList = new ArrayList<>();
            protocolList.add(Protocol.H2_PRIOR_KNOWLEDGE);
            OkHttpClient.Builder builder =
                    new okhttp3.OkHttpClient.Builder().readTimeout(60, TimeUnit.SECONDS).connectTimeout(60,
                            TimeUnit.SECONDS).writeTimeout(120, TimeUnit.SECONDS).connectionPool(new ConnectionPool())
                            .protocols(protocolList);
            OkHttpClient client = builder.build();
    
            RequestBody requestBody = RequestBody.create(mediaType, jsonObject.toString());
            okhttp3.Request.Builder httpRequestBuilder =
                    new Request.Builder().url(URLUtil.encode(url, "utf-8")).post(requestBody);
            Request request = httpRequestBuilder.build();
            try {
                // 同步
    //            Response response = client.newCall(request).execute();
    //            if(response.isSuccessful()){
    //                body = response.body().string();
    //                log.info("响应body:{}", body);
    //            }else{
    //                log.error("调用http2 post失败,response.code={}", response.code());
    //            }
    
                // 异步
                client.newCall(request).enqueue(new Callback() {
                    @Override
                    public void onFailure(@NotNull Call call, @NotNull IOException e) {
                        log.error("调用http2 post异常,{}", e.toString());
                    }
                    @Override
                    public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {
                        if (response.isSuccessful()) {
                            String body = Objects.requireNonNull(response.body()).string();
                            log.info("调用http2 post响应body:{}", body);
                            if (body != null && !"".equals(body)) {
                                NfResponseUtil nfResponseUtil = new NfResponseUtil();
                                nfResponseUtil.nfResponse(ntType, body);
                            }
                        } else {
                            log.error("调用http2 post失败,response.code={}", response.code());
                        }
                    }
                });
            } catch (Exception e) {
                log.error("调用http2 post异常,{}", e.toString());
                e.printStackTrace();
            }
        }
    }
  • 相关阅读:
    删DS.Store
    switch 多重选择
    PrintWrite写入文件
    读取文件
    notepad++如何把文件保存为java文件
    让notepad++成为轻量级JAVA的IDE
    Jenkins构建Python项目提示:'python' 不是内部或外部命令,也不是可运行的程序
    相关服务账号
    Jenkins安装与启动
    jmeter安装
  • 原文地址:https://www.cnblogs.com/lizm166/p/16820899.html
Copyright © 2020-2023  润新知