java掉用第三方http接口

调用第三方接口也是我们开发经常遇到得,记录自己掉用第三方接口得过程
1:一般分为http和https两种情况,我目前只用了http
话不多说,首先我们加入maven依赖

org.jsoup
jsoup
1.11.3

在这里插入图片描述

2:接下来就是我们的工具类了,兼容http和https两种请求类型
package com.example.utils;
import java.io.Closeable;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.security.SecureRandom;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.X509TrustManager;
import org.jsoup.Connection;
import org.jsoup.Connection.Method;
import org.jsoup.Connection.Response;
import org.jsoup.Jsoup;
/**

  • Http发送post请求工具,兼容http和https两种请求类型
    /
    public class HttpsUtils {
    /
    *

    • 请求超时时间
      */
      private static final int TIME_OUT = 120000;

    /**

    • Https请求
      */
      private static final String HTTPS = “https”;

    /**

    • Content-Type
      */
      private static final String CONTENT_TYPE = “Content-Type”;

    /**

    • 表单提交方式Content-Type
      */
      private static final String FORM_TYPE = “application/x-www-form-urlencoded;charset=UTF-8”;

    /**

    • JSON提交方式Content-Type
      */
      private static final String JSON_TYPE = “application/json;charset=UTF-8”;

    /**

    • 发送Get请求
    • @param url 请求URL
    • @return HTTP响应对象
    • @throws IOException 程序异常时抛出,由调用者处理
      */
      public static Response get(String url) throws IOException {
      return get(url, null);
      }

    /**

    • 发送Get请求

    • @param url 请求URL

    • @param headers 请求头参数

    • @return HTTP响应对象

    • @throws IOException 程序异常时抛出,由调用者处理
      */
      public static Response get(String url, Map<String, String> headers) throws IOException {
      if (null == url || url.isEmpty()) {
      throw new RuntimeException(“The request URL is blank.”);
      }

      // 如果是Https请求
      if (url.startsWith(HTTPS)) {
      getTrust();
      }
      Connection connection = Jsoup.connect(url);
      connection.method(Method.GET);
      connection.timeout(TIME_OUT);
      connection.ignoreHttpErrors(true);
      connection.ignoreContentType(true);
      connection.maxBodySize(0);

      if (null != headers) {
      connection.headers(headers);
      }
      Response response = connection.execute();
      return response;
      }

    /**

    • 发送JSON格式参数POST请求
    • @param url 请求路径
    • @param params JSON格式请求参数
    • @return HTTP响应对象
    • @throws IOException 程序异常时抛出,由调用者处理
      */
      public static Response post(String url, String params) throws IOException {
      return doPostRequest(url, null, params);
      }

    /**

    • 发送JSON格式参数POST请求
    • @param url 请求路径
    • @param headers 请求头中设置的参数
    • @param params JSON格式请求参数
    • @return HTTP响应对象
    • @throws IOException 程序异常时抛出,由调用者处理
      */
      public static Response post(String url, Map<String, String> headers, String params) throws IOException {
      return doPostRequest(url, headers, params);
      }

    /**

    • 字符串参数post请求
    • @param url 请求URL地址
    • @param paramMap 请求字符串参数集合
    • @return HTTP响应对象
    • @throws IOException 程序异常时抛出,由调用者处理
      */
      public static Response post(String url, Map<String, String> paramMap) throws IOException {
      return doPostRequest(url, null, paramMap, null);
      }

    /**

    • 带请求头的普通表单提交方式post请求
    • @param headers 请求头参数
    • @param url 请求URL地址
    • @param paramMap 请求字符串参数集合
    • @return HTTP响应对象
    • @throws IOException 程序异常时抛出,由调用者处理
      */
      public static Response post(Map<String, String> headers, String url, Map<String, String> paramMap) throws IOException {
      return doPostRequest(url, headers, paramMap, null);
      }

    /**

    • 带上传文件的post请求
    • @param url 请求URL地址
    • @param paramMap 请求字符串参数集合
    • @param fileMap 请求文件参数集合
    • @return HTTP响应对象
    • @throws IOException 程序异常时抛出,由调用者处理
      */
      public static Response post(String url, Map<String, String> paramMap, Map<String, File> fileMap) throws IOException {
      return doPostRequest(url, null, paramMap, fileMap);
      }

    /**

    • 带请求头的上传文件post请求
    • @param url 请求URL地址
    • @param headers 请求头参数
    • @param paramMap 请求字符串参数集合
    • @param fileMap 请求文件参数集合
    • @return HTTP响应对象
    • @throws IOException 程序异常时抛出,由调用者处理
      */
      public static Response post(String url, Map<String, String> headers, Map<String, String> paramMap, Map<String, File> fileMap) throws IOException {
      return doPostRequest(url, headers, paramMap, fileMap);
      }

    /**

    • 执行post请求

    • @param url 请求URL地址

    • @param headers 请求头

    • @param jsonParams 请求JSON格式字符串参数

    • @return HTTP响应对象

    • @throws IOException 程序异常时抛出,由调用者处理
      */
      private static Response doPostRequest(String url, Map<String, String> headers, String jsonParams) throws IOException {
      if (null == url || url.isEmpty()) {
      throw new RuntimeException(“The request URL is blank.”);
      }

      // 如果是Https请求
      if (url.startsWith(HTTPS)) {
      getTrust();
      }

      Connection connection = Jsoup.connect(url);
      connection.method(Method.POST);
      connection.timeout(TIME_OUT);
      connection.ignoreHttpErrors(true);
      connection.ignoreContentType(true);
      connection.maxBodySize(0);

      if (null != headers) {
      connection.headers(headers);
      }

      connection.header(CONTENT_TYPE, JSON_TYPE);
      connection.requestBody(jsonParams);

      Response response = connection.execute();
      return response;
      }

    /**

    • 普通表单方式发送POST请求

    • @param url 请求URL地址

    • @param headers 请求头

    • @param paramMap 请求字符串参数集合

    • @param fileMap 请求文件参数集合

    • @return HTTP响应对象

    • @throws IOException 程序异常时抛出,由调用者处理
      */
      private static Response doPostRequest(String url, Map<String, String> headers, Map<String, String> paramMap, Map<String, File> fileMap) throws IOException {
      if (null == url || url.isEmpty()) {
      throw new RuntimeException(“The request URL is blank.”);
      }

      // 如果是Https请求
      if (url.startsWith(HTTPS)) {
      getTrust();
      }

      Connection connection = Jsoup.connect(url);
      connection.method(Method.POST);
      connection.timeout(TIME_OUT);
      connection.ignoreHttpErrors(true);
      connection.ignoreContentType(true);
      connection.maxBodySize(0);

      if (null != headers) {
      connection.headers(headers);
      }

      // 收集上传文件输入流,最终全部关闭
      List inputStreamList = null;
      try {

       // 添加文件参数
       if (null != fileMap && !fileMap.isEmpty()) {
           inputStreamList = new ArrayList<InputStream>();
           InputStream in = null;
           File file = null;
           for (Entry<String, File> e : fileMap.entrySet()) {
               file = e.getValue();
               in = new FileInputStream(file);
               inputStreamList.add(in);
               connection.data(e.getKey(), file.getName(), in);
           }
       }
      
       // 普通表单提交方式
       else {
           connection.header(CONTENT_TYPE, FORM_TYPE);
       }
      
       // 添加字符串类参数
       if (null != paramMap && !paramMap.isEmpty()) {
           connection.data(paramMap);
       }
      
       Response response = connection.execute();
       return response;
      

      }

      // 关闭上传文件的输入流
      finally {
      closeStream(inputStreamList);
      }
      }

    /**

    • 关流
    • @param streamList 流集合
      */
      private static void closeStream(List<? extends Closeable> streamList) {
      if (null != streamList) {
      for (Closeable stream : streamList) {
      try {
      stream.close();
      } catch (IOException e) {
      e.printStackTrace();
      }
      }
      }
      }

    /**

    • 获取服务器信任
      */
      private static void getTrust() {
      try {
      HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {

           @Override
           public boolean verify(String hostname, SSLSession session) {
               return true;
           }
       });
       SSLContext context = SSLContext.getInstance("TLS");
       context.init(null, new X509TrustManager[] { new X509TrustManager() {
      
           @Override
           public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {}
      
           @Override
           public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {}
      
           @Override
           public X509Certificate[] getAcceptedIssuers() {
               return new X509Certificate[0];
           }
       } }, new SecureRandom());
       HttpsURLConnection.setDefaultSSLSocketFactory(context.getSocketFactory());
      

      } catch (Exception e) {
      e.printStackTrace();
      }
      }
      }
      3:最重要的工具类已经有了,然后就是这么使用啦
      Connection.Response respon = HttpsUtils.get(“http://掉用的第三方ip:端口号/BaMicroServiceV2/v1/listIcpShangHaiFatUnit?dwmc=” + dwmc);
      String body = respon.body();
      这里的dwmc是参数,
      4: 转换成json格式的字符串
      JSONObject jsonObject = JSONObject.fromObject(body);
      到这一步其实已经差不多了,接下来就是根据自己的需求获取相应的json字符串信息啦
      5:一个好用的方法,判断是否为json串,推荐给大家
      public static boolean isJson(String body) {
      try {
      JSONObject.fromObject(body);
      return true;
      } catch (Exception e) {
      return false;
      }
      }
      可以把第三步的body传进来,如果返回true,接着执行第四步。ok,是不是很简单

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java后端调用第三方RESTful接口,你可以使用JavaHTTP客户端库来发送HTTP请求。以下是一个简单的示例代码,演示如何使用Apache HttpClient库发送GET请求: ```java import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.util.EntityUtils; import java.io.IOException; public class RestApiClient { public static void main(String[] args) { CloseableHttpClient httpClient = HttpClientBuilder.create().build(); String url = "https://api.example.com/endpoint"; // 替换为目标接口的URL HttpGet httpGet = new HttpGet(url); try { HttpResponse response = httpClient.execute(httpGet); int statusCode = response.getStatusLine().getStatusCode(); String responseBody = EntityUtils.toString(response.getEntity()); System.out.println("Status code: " + statusCode); System.out.println("Response body: " + responseBody); } catch (IOException e) { e.printStackTrace(); } finally { try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } } } ``` 上述代码中,我们使用了Apache HttpClient库来创建一个HTTP客户端,并构造了一个GET请求。然后,我们使用这个客户端发送请求,并获取响应的状态码和响应体。最后,记得关闭HTTP客户端。 这只是一个简单的示例,你可以根据实际需求进行定制化开发,例如添加请求头、传递请求参数等。请注意,这只是其中一种实现方式,还有其他的HTTP客户端库可供选择,如OkHttp、Spring RestTemplate等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值