运用HttpClient调用其它项目的接口

简介: 运用HttpClient调用其它项目的接口

首先引入依赖

 <dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpclient</artifactId>
      <version>4.5.6</version>
    </dependency>
private final int timeOut = 500;public String queryString(String code) {
        // 获得Http客户端(可以理解为:先有一个浏览器;注意:实际上HttpClient与浏览器是不一样的)
        CloseableHttpClient httpClient = HttpClientBuilder.create().build();
        // 参数
        StringBuffer params = new StringBuffer();
        try {
            // 字符数据最好encoding下;这样一来,某些特殊字符才能传过去(如:某人的名字就是“&”,不encoding的话,传不过去)
            params.append("code=" + URLEncoder.encode(code, "utf-8"));
        } catch (UnsupportedEncodingException e1) {
            e1.printStackTrace();
        }
        // 创建Get请求
        HttpGet httpGet = new HttpGet(192.168.xx.xx:port/xx/queryString);
        // 响应模型
        CloseableHttpResponse response = null;
        try {
            // 配置信息
            RequestConfig requestConfig = RequestConfig.custom()
                    // 设置连接超时时间(单位毫秒)
                    .setConnectTimeout(timeOut)
                    // 设置请求超时时间(单位毫秒)
                    .setConnectionRequestTimeout(timeOut)
                    // socket读写超时时间(单位毫秒)
                    .setSocketTimeout(timeOut)
                    // 设置是否允许重定向(默认为true)
                    .setRedirectsEnabled(true).build();
            // 将上面的配置信息 运用到这个Get请求里
            httpGet.setConfig(requestConfig);
            // 由客户端执行(发送)Get请求
            response = httpClient.execute(httpGet);
            // 从响应模型中获取响应实体
            HttpEntity responseEntity = response.getEntity();
            System.out.println("响应状态为:" + response.getStatusLine());
            if (responseEntity != null) {
                System.out.println("响应内容长度为:" + responseEntity.getContentLength());
                System.out.println("响应内容为:" + EntityUtils.toString(responseEntity));
                String json = EntityUtils.toString(responseEntity);
                String result = JsonUtil.fromJson(json, String.class);
                if(null!= result ){
                    return result ;
                }
            } else {
                return null;
            }
        } catch (Exception e) {
            //todo 此处做异常处理返回
            //e.printStackTrace();return ("与数据服务连接异常!");
        } finally {
            closeClient(httpClient, response);
        }
        return null;
    }
相关文章
|
存储 Java Maven
IDEA 中 Project 和 Module 详解与实战
IDEA 中 Project 和 Module 详解与实战
1681 0
IDEA 中 Project 和 Module 详解与实战
|
XML Java 关系型数据库
@Transactional注解的失效场景
@Transactional注解的失效场景
299 1
|
4月前
|
存储 Web App开发 前端开发
Python + Requests库爬取动态Ajax分页数据
Python + Requests库爬取动态Ajax分页数据
|
API PHP 开发工具
视觉智能开放平台操作报错合集之报错:Specified signature does not match our calculation,该如何解决
在使用视觉智能开放平台时,可能会遇到各种错误和问题。虽然具体的错误代码和消息会因平台而异,但以下是一些常见错误类型及其可能的原因和解决策略的概述,包括但不限于:1. 认证错误、2. 请求参数错误、3. 资源超限、4. 图像质量问题、5. 服务不可用、6. 模型不支持的场景、7. 网络连接问题,这有助于快速定位和解决问题。
322 1
|
8月前
|
存储 NoSQL 关系型数据库
微服务——MongoDB的应用场景
随着Web2.0时代的到来,传统关系型数据库(如MySQL)在高并发读写、海量数据存储及高可扩展性需求方面逐渐力不从心。而MongoDB凭借其灵活的文档结构和高效性能,在社交、游戏、物流、物联网和视频直播等场景中表现出色。这些场景通常具有数据量大、写入频繁且对事务要求不高的特点。选择MongoDB适合以下情况:应用无需复杂事务与join支持、需求不确定需快速迭代、需处理高QPS读写或超大规模数据存储、追求高可用性和快速水平扩展能力。相比MySQL,MongoDB能以更低的学习、开发和运维成本满足现代应用需求。
273 0
|
安全 前端开发 JavaScript
|
网络安全
HttpURLConnection 跳过ssl验证
HttpURLConnection 跳过ssl验证
436 0
|
Java 关系型数据库 MySQL
SpringBoot 导出多个Excel文件,压缩成.zip格式下载
SpringBoot 导出多个Excel文件,压缩成.zip格式下载
1179 0
SpringBoot 导出多个Excel文件,压缩成.zip格式下载
|
Java 数据安全/隐私保护
Springboot拓展之整合邮件 JavaMail的使用与实操
Springboot拓展之整合邮件 JavaMail的使用与实操
389 0
|
Python
Python内置函数map、split、join讲解
Python内置函数map、split、join讲解
1325 0