举例说明JAVA调用第三方接口的GET/POST/PUT请求方式

 更新时间:2024年01月09日 09:05:29   作者:英勇的小王同志  
在日常工作和学习中,有很多地方都需要发送请求,这篇文章主要给大家介绍了关于JAVA调用第三方接口的GET/POST/PUT请求方式的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下

GET请求

public static String doGet(String url, String charset){

        System.out.println("请求的接口:"+url);

        /**
         * 1.生成HttpClient对象并设置参数
         */
        HttpClient httpClient = new HttpClient();
        //设置Http连接超时为5秒
        httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(5000);

        /**
         * 2.生成GetMethod对象并设置参数
         */
        GetMethod getMethod = new GetMethod(url);
        //设置get请求超时为5秒
        getMethod.getParams().setParameter(HttpMethodParams.SO_TIMEOUT, 5000);
        //设置请求重试处理,用的是默认的重试处理:请求三次
        getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler());

        String response = "";

        /**
         * 3.执行HTTP GET 请求
         */
        try {
            int statusCode = httpClient.executeMethod(getMethod);

            /**
             * 4.判断访问的状态码
             */
            if (statusCode != HttpStatus.SC_OK){
                System.err.println("请求出错:" + getMethod.getStatusLine());
            }

            /**
             * 5.处理HTTP响应内容
             */
            //HTTP响应头部信息,这里简单打印
            Header[] headers = getMethod.getResponseHeaders();
           /* for (Header h: headers){
                System.out.println(h.getName() + "---------------" + h.getValue());
            }*/
            //读取HTTP响应内容,这里简单打印网页内容
            //读取为字节数组
            byte[] responseBody = getMethod.getResponseBody();
            response = new String(responseBody, charset);
            System.out.println("接口返回数据为:" + response);
            //读取为InputStream,在网页内容数据量大时候推荐使用
            //InputStream response = getMethod.getResponseBodyAsStream();
            return response;
        } catch (HttpException e) {
            //发生致命的异常,可能是协议不对或者返回的内容有问题
            System.out.println("请检查输入的URL!");
            e.printStackTrace();
            return "调用GET请求失败";
        } catch (IOException e){
            //发生网络异常
            System.out.println("发生网络异常!");
            e.printStackTrace();
            return "调用GET请求失败";
        }finally {
            /**
             * 6.释放连接
             */
            getMethod.releaseConnection();
        }
    }
//get请求示例
String result = HttpClientToInterface.doGet("http://127.0.0.1:8085/xxxx/xxxx?yy=yyyyyy&zz=zzzzzzz","UTF-8");

POST请求

public static String doPost(String url, String charset){

        System.out.println("请求的接口:"+url);

        /**
         * 1.生成HttpClient对象并设置参数
         */
        HttpClient httpClient = new HttpClient();
        //设置Http连接超时为5秒
        httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(5000);

        /**
         * 2.生成PostMethod对象并设置参数
         */
        PostMethod postMethod = new PostMethod(url);
        //设置post请求超时为5秒
        postMethod.getParams().setParameter(HttpMethodParams.SO_TIMEOUT, 5000);
        //设置请求重试处理,用的是默认的重试处理:请求三次
        postMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler());

        String response = "";

        /**
         * 3.执行HTTP POST 请求
         */
        try {
            int statusCode = httpClient.executeMethod(postMethod);

            /**
             * 4.判断访问的状态码
             */
            if (statusCode != HttpStatus.SC_OK){
                System.err.println("请求出错:" + postMethod.getStatusLine());
            }

            /**
             * 5.处理HTTP响应内容
             */
            //HTTP响应头部信息,这里简单打印
            Header[] headers = postMethod.getResponseHeaders();
           /* for (Header h: headers){
                System.out.println(h.getName() + "---------------" + h.getValue());
            }*/
            //读取HTTP响应内容,这里简单打印网页内容
            //读取为字节数组
            byte[] responseBody = postMethod.getResponseBody();
            response = new String(responseBody, charset);
            System.out.println("接口返回数据为:" + response);
            //读取为InputStream,在网页内容数据量大时候推荐使用
            //InputStream response = getMethod.getResponseBodyAsStream();
            return response;
        } catch (HttpException e) {
            //发生致命的异常,可能是协议不对或者返回的内容有问题
            System.out.println("请检查输入的URL!");
            e.printStackTrace();
            return "调用POST请求失败";
        } catch (IOException e){
            //发生网络异常
            System.out.println("发生网络异常!");
            e.printStackTrace();
            return "调用POST请求失败";
        }finally {
            /**
             * 6.释放连接
             */
            postMethod.releaseConnection();
        }
    }
//post请求示例
String result = HttpClientToInterface.doPost("http://127.0.0.1:8085/xxxx/xxxx?yy=yyyyyy&zz=zzzzzzz","UTF-8");

POST请求(JSON传参)

public static String doPost(String url, JSONObject json){
        try {
            CloseableHttpClient httpClient = HttpClientBuilder.create().build();
            HttpPost post = new HttpPost(url);

            // 首先Header部分需要设定字符集为:uft-8
            post.addHeader("Content-Type", "application/json;charset=utf-8");
            // 此处也需要设定
            post.setHeader("Accept", "*/*");
            post.setHeader("Accept-Encoding", "gzip, deflate, br");
//            post.setHeader("Accept-Language", "zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3");
            post.setHeader("Connection", "keep-alive");
            post.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36");
            post.setEntity(new StringEntity(json.toString(), Charset.forName("UTF-8"))); //设置请求参数
            HttpResponse response = httpClient.execute(post);
            int statusCode = response.getStatusLine().getStatusCode();
            if (HttpStatus.SC_OK == statusCode){
                //返回String
                String res = EntityUtils.toString(response.getEntity());
                System.out.println(res);
                return res;
            }else{
                return "调用POST请求失败";
            }

        } catch (Exception e) {
            e.printStackTrace();
            return "调用POST请求失败";
        }
    }
//post请求示例-josn传参
 Map<String, Object> map = new HashMap<>();
 map.put("xxxx", "xxxxxx");
 map.put("xxxxx", "xxxxxx");
 JSONObject json = new JSONObject(map);

//以post形式请求接口
 String result = HttpClientToInterface.doPost("http://127.0.0.1:8085/xxxx/xxxxx/", json);
 JSONObject jsonObject = JSONObject.parseObject(result);
 String data = jsonObject.get("data").toString();

PUT请求(传TOKEN)

public static String doPut(String url,String token){
        try (CloseableHttpClient httpclient = HttpClients.createDefault()) {
            HttpPut httpPut = new HttpPut(url);
            //设置编码 , 设置token参数
            httpPut.addHeader("Authentication", token);
            // 首先Header部分需要设定字符集为:uft-8
            httpPut.addHeader("Content-Type", "application/json;charset=utf-8");
            // 此处也需要设定
            httpPut.setHeader("Accept", "*/*");
            httpPut.setHeader("Accept-Encoding", "gzip, deflate, br");
//            post.setHeader("Accept-Language", "zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3");
            httpPut.setHeader("Connection", "keep-alive");
            httpPut.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36");
            //设置请求参数

            System.out.println("Executing request " + httpPut.getRequestLine());

            // Create a custom response handler
            ResponseHandler<String> responseHandler = response -> {
                int status = response.getStatusLine().getStatusCode();
                if (status >= 200 && status < 300) {
                    HttpEntity entity = response.getEntity();
                    return entity != null ? EntityUtils.toString(entity) : null;
                } else {
                    throw new ClientProtocolException("Unexpected response status: " + status);
                }
            };
            String responseBody = httpclient.execute(httpPut, responseHandler);
            System.out.println("接口返回数据为:"+responseBody);
            return responseBody;
        } catch (IOException e) {
            e.printStackTrace();
            return "调用PUT请求失败";
        }
    }
//put请求示例
String result = HttpClientToInterface.doPut("http://127.0.0.1:8085/xxxx/xxxxx", token);

总结 

到此这篇关于JAVA调用第三方接口的GET/POST/PUT请求方式的文章就介绍到这了,更多相关JAVA调用第三方接口请求内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Springboot整合spring-boot-starter-data-elasticsearch的过程

    Springboot整合spring-boot-starter-data-elasticsearch的过程

    本文详细介绍了Springboot整合spring-boot-starter-data-elasticsearch的过程,包括版本要求、依赖添加、实体类添加、索引的名称、分片、副本设置等,同时,还介绍了如何使用ElasticsearchRepository类进行增删改查操作
    2024-10-10
  • Java8时间接口LocalDateTime详细用法

    Java8时间接口LocalDateTime详细用法

    最近看别人项目源码,发现Java8新的日期时间API很方便强大,所以整理了这篇文章,文中有非常详细的代码示例,对正在学习java的小伙伴们有很好的帮助,需要的朋友可以参考下
    2021-05-05
  • springboot @Value实现获取计算机中绝对路径文件的内容

    springboot @Value实现获取计算机中绝对路径文件的内容

    这篇文章主要介绍了springboot @Value实现获取计算机中绝对路径文件的内容,具有很好的参考价值,希望对大家有所帮助。
    2021-09-09
  • springcloud ribbon 饥饿加载原理解析

    springcloud ribbon 饥饿加载原理解析

    这篇文章主要介绍了springcloud ribbon 饥饿加载原理解析,饥饿加载特别适用于对启动性能要求较高的场景,如系统启动初期就有高并发请求的情况,感兴趣的朋友跟随小编一起学习吧
    2024-04-04
  • springBoot中的CORS跨域注解@CrossOrigin详解

    springBoot中的CORS跨域注解@CrossOrigin详解

    这篇文章主要介绍了springBoot中的CORS跨域注解@CrossOrigin详解,通常,服务于 JS 的主机(例如 example.com)与服务于数据的主机(例如 api.example.com)是不同的,在这种情况下,CORS 可以实现跨域通信,需要的朋友可以参考下
    2023-12-12
  • Spring MVC 文件上传下载的实例

    Spring MVC 文件上传下载的实例

    本篇文章主要介绍了Spring MVC 文件上传下载的实例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • Java多线程之并发编程的基石CAS机制详解

    Java多线程之并发编程的基石CAS机制详解

    这篇文章主要介绍了java并发编程之cas详解,涉及cas使用场景和cas用作原子操作等内容,具有一定参考价值,需要的朋友可以了解下
    2021-09-09
  • springboot+dubbo启动项目时报错 zookeeper not connected的问题及解决方案

    springboot+dubbo启动项目时报错 zookeeper not connect

    这篇文章主要介绍了springboot+dubbo项目启动项目时报错 zookeeper not connected的问题,本文给大家定位问题及解决方案,结合实例代码给大家讲解的非常详细,需要的朋友可以参考下
    2023-06-06
  • Android studio按钮点击页面跳转详细步骤

    Android studio按钮点击页面跳转详细步骤

    在Android应用程序中,页面跳转是非常常见的操作,下面这篇文章主要给大家介绍了关于Android studio按钮点击页面跳转的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-06-06
  • SpringCloud Feign 服务调用的实现

    SpringCloud Feign 服务调用的实现

    Feign是一个声明性web服务客户端。本文记录多个服务之间使用Feign调用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-01-01

最新评论