首页 > 编程语言 >Java使用HttpClient实现GET和POST请求

Java使用HttpClient实现GET和POST请求

时间:2023-11-17 18:44:33浏览次数:40  
标签:Java String GET url new post data POST conn

GET请求(带参数)

前端

export const getRealTimeData = (deviceLabel) => {
  return request({
    url: '/blade-inorganization/Data/realTime-data?deviceLabel='+deviceLabel,
    method: 'get',
  })
}

import {getRealTimeData} from "@/api/inorganization/onlinestatistics/Pollution";

var devicelabel = "TSPXXZGLTB0054";
getRealTimeData0(devicelabel).then(res => {
    console.log('res', res);
})

后端

@GetMapping("/realTime-data")
@ApiOperationSupport(order = 3)
@ApiOperation(value = "获取历史数据", notes = "获取历史数据")
public String getRealTimeData(@RequestParam String deviceLabel){
    String Url="http://192.1.27.110:32672/api/data/device-detail/real-data-prop?deviceLabel=";
    try {
        // 传入参数
        String realUrl = Url + deviceLabel;
        System.out.println(realUrl);
        URL url = new URL(realUrl);
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        // 在连接之前设置属性
        // Content-Type实体头用于向接收方指示实体的介质类型,指定HEAD方法送到接收方的实体介质类型,或GET方法发送的请求介质类型
        conn.setRequestProperty("Content-Type", "application/json; charset=utf-8");
        // 设置打开与此URLConnection引用的资源的通信链接时使用的指定超时值(以毫秒为单位)
        conn.setConnectTimeout(10000);
        // 将读取超时设置为指定的超时时间,以毫秒为单位。
        // conn.setReadTimeout(60000);
        conn.setRequestMethod("GET");
        // Post 请求不能使用缓存
        conn.setUseCaches(false);

        // 建立连接
        conn.connect();
        // 获取响应
        BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        String line;
        String result = "";
        while ((line = reader.readLine()) != null) {
            result += line;
        }
        reader.close();
        conn.disconnect();
        System.out.println(result);
        return result;
    } catch (MalformedURLException e) {
        e.printStackTrace();
    } catch (SocketTimeoutException e) {
        e.printStackTrace();
    } catch (IOException e) {

        e.printStackTrace();
    }
    return null;
}

 

POST请求

前端

export const getHistoryData = (device) => {
  return request({
    url: '/blade-inorganization/Data/history-data',
    method: 'post',
    data: device
  })
}

import {getHistoryData} from "@/api/inorganization/onlinestatistics/Pollution";

var searchList = {
    "deviceCode": "A-A2-A1-A-001",
    "endTime": 1700031600000,
    "propList": [],
    "startTime": 1700024400000,
    "timeSpace": 1
};

getHistoryData(searchList).then(res => {
    console.log("++++++++++++++++++")
    console.log('res', res);
})

后端

@PostMapping("/history-data")
@ApiOperationSupport(order = 1)
@ApiOperation(value = "获取历史数据", notes = "获取历史数据")
public String getHistoryData(@RequestBody HashMap<String,Object> map){
    String url="http://192.1.27.110:32672/api/data/history-data/get-property-history-avg";
    HttpPost post = new HttpPost(url);
    String paramStr = JSON.toJSONString(map);
    StringEntity stringEntity = new StringEntity(paramStr, StandardCharsets.UTF_8);
    System.out.println(map);
    System.out.println(paramStr);
    //请求参数
    post.setEntity(stringEntity);

    //请求头
    post.setHeader("Content-Type", "application/json;charset=UTF-8");
    String msg = null;
    InetAddress ipaddr;
    try {
        //设置长/短连接 此处为短连接
        post.setHeader(HttpHeaders.CONNECTION, HTTP.CONN_CLOSE);

        //通过hostname获取本机ip地址
        ipaddr = InetAddress.getLocalHost();
        post.addHeader(new BasicHeader("API-RemoteIP", ipaddr.getHostAddress()));

        //创建httpclient对象发送post请求
        CloseableHttpClient httpClient = HttpClients.createDefault();
        CloseableHttpResponse resp = httpClient.execute(post);

        try {
            //返回信息
            HttpEntity entity = resp.getEntity();

            //获取请求状态码
            int statusCode = resp.getStatusLine().getStatusCode();
            if (entity != null) {
                msg = EntityUtils.toString(entity);
                System.out.println(msg);

                //输出日志
                //logger.info("url:" + url + "参数:" + params.toString() + "返回信息:" + msg);
            }
            if (statusCode != 200 && statusCode != 302) {
                //输出日志
                System.out.println(msg);
                //logger.info("url:" + url + "失败信息:" + msg);
            }
        } finally {
            resp.close();
        }
    } catch (Exception e) {
        e.printStackTrace();
        throw new RuntimeException(e.getMessage(), e);
    } finally {
        post.reset();
        post.releaseConnection();
    }
    return msg;
}

 

标签:Java,String,GET,url,new,post,data,POST,conn
From: https://www.cnblogs.com/REN-Murphy/p/17839469.html

相关文章

  • postman双击没反应
    在工作中,我们会经常使用postman,有时候我们的postman会出现双击了之后打不开,这就会使我们非常着急。解决办法:打开任务管理器,关闭掉可能运行的postman进程,删除掉桌面上的postman快捷方式,然后到postman的安装目录中,双机程序postman.exe即可运行了 ......
  • 免费!IDEA插件推荐:Apipost-Helper
    今天给大家推荐一款IDEA插件:Apipost-Helper-2.0,写完代码IDEA内一键生成API文档,无需安装、打开任何其他软件;写完代码IDEA内一键调试,无需安装、打开任何其他软件;生成API目录树,双击即可快速定位API定义的代码…非常好用!而且完全免费!在IDEA编辑器插件中心输入Apipost搜索安装:Apipost......
  • 使用Java写一个简易web服务器
    使用Java写一个简易web服务器来替代nginx功能。main:publicstaticvoidmain(String[]args){ServerConfigLoaderserverConfigLoader=Factory.serverConfigLoader();ServerConfigserverConfig=serverConfigLoader.getServerConfig();Htt......
  • javascript 自定义分页组件
    仿boostrap前端分页组件的实现一 写一个前端自定义分页组件,需要考虑以下问题  /*     需要一个<ul id="pagination"></ul>标签   total; // 总数据的数量   pageSize; // 一页显示数量   pageIndex; // 当前页   */ 二实现细节编写html......
  • (javascript)将ztree树结构的数据转成二维数组
    ztree树结构的数据结构如下:[{"id":3990,"name":"泡沫灭火","iconShow":false,"children":[{"id":8616,......
  • java zip 压缩密码
    在Java开发中,Zip文件是一种常见的文件压缩格式。有时候我们需要给Zip文件添加密码保护,以确保文件的安全性。本文将指导你如何使用Java代码来实现Zip文件的添加密码功能。流程概述下面是实现“JavaZip添加密码”的整个流程:步骤描述步骤1创建一个Zip文件步骤2向Zi......
  • idea中out目录、target目录和build目录的区别?
    在IntelliJIDEA中,out目录和target目录是两个不同的目录,它们用于存放编译和构建输出的文件。它们的区别如下:out目录:out目录是IntelliJIDEA的默认输出目录。它用于存放项目的编译输出文件,包括编译后的类文件和其他资源文件。在大多数情况下,out目录是用于开发和调试期......
  • C# RSA2 SHA256 对应JAVA(SHA256withRSA)公钥验签名,CER公钥证书
    Stringtimestamp="1630905585";Stringnonce="9003323344";Stringsignature="tnjIAcEISq/ClrOppv/nojeZnE/pB1wNfQC/hMTME+rQMapWzvs9v1J68ueDpVzs1RW22dNotmUVy2sM6thNFRkaOx4qQGslX6kIttwvlsJsSEIR3qrjdPdUAkbP2KDRLujspxE9X0daJ6BU+......
  • 二维码保存到本地Java代码
    工具类importjava.io.ByteArrayInputStream;importjava.io.File;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStream;publicclassWxaQrCodeUtil{/***二维码保存到本地*@parambytes*@parampath保......
  • JavaScript之splice()
    参考:https://blog.csdn.net/weixin_45726044/article/details/120151153概述splice()方法通过删除或替换现有元素或者原地添加新的元素来修改数组,并以数组形式返回被修改的内容。此方法会改变原数组。一个参数splice(index)——>从index的位置开始,删除之后的所有元素(包括......