iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > Python >SpringBoot接口开发教程(httpclient客户端)
  • 875
分享到

SpringBoot接口开发教程(httpclient客户端)

2024-04-02 19:04:59 875人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录SpringBoot接口开发服务端客户端post请求get请求springBoot之Httpclient使用引入相关依赖编写相关工具类业务代码中使用SpringBoot接口开发

SpringBoot接口开发

服务端

@RestController
@RequestMapping("/landary")
public class landaryController {
 
    @RequestMapping("adduser")
    public JSONObject addUser(@RequestBody jsONObject userEntity)
    {
        System.out.println(JSONObject.toJSONString(userEntity));
        JSONObject json=new JSONObject();
        json.fluentPut("code","500").fluentPut("result",userEntity);
        return json;
    }
 
    @RequestMapping("showuser")
    public Object showUser()
    {
        return JSON.toJSONString("hhh");
    } 
}

客户端post请求

 public static String sendSms(String uid,String title,String content){
        HttpClient httpclient = new DefaultHttpClient();
 
 
        String smsUrl="http://127.0.0.1:8088/landary/adduser";
        HttpPost httppost = new HttpPost(smsUrl);
        String strResult = "";
 
        try {
            JSONObject jobj = new JSONObject();
            jobj.put("uid", uid);
            jobj.put("title", title);
            jobj.put("content",content);
 
            System.out.println(jobj.toString());
         //   nameValuePairs.add(new BasicNameValuePair("msg", (jobj.toString())));
    
 
           StringEntity s = new StringEntity(jobj.toString());
            s.setContentEncoding("UTF-8");
            s.setContentType("application/json");//发送json数据需要设置contentType
            httppost.setEntity(s);
            HttpResponse response = httpclient.execute(httppost);
            if (response.getStatusLine().getStatusCode() == 200) {
					
                String conResult = EntityUtils.toString(response
                        .getEntity());
                System.out.println(conResult);
               JSONObject sobj = new JSONObject();
               sobj = JSONObject.parseObject(conResult);
                String result = sobj.getString("result");
                String code = sobj.getString("code");
                if(code.equals("500")){
                    System.out.println(result);
                    strResult += "发送成功";
                }else{
                    strResult += "发送失败,"+code;
                }
 
            } else {
                String err = response.getStatusLine().getStatusCode()+"";
                strResult += "发送失败:"+err;
            }
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
 
        return strResult;
    }

get请求


    public void get() {
        CloseableHttpClient httpclient = HttpClients.createDefault();
        try {
            // 创建httpget.
            HttpGet httpget = new HttpGet("http://127.0.0.1:8088/landary/showuser");
            System.out.println("executing request " + httpget.getURI());
            // 执行get请求.
            CloseableHttpResponse response = httpclient.execute(httpget);
            try {
                // 获取响应实体
                HttpEntity entity = response.getEntity();
                System.out.println("--------------------------------------");
                // 打印响应状态
                System.out.println(response.getStatusLine());
                if (entity != null) {
                    // 打印响应内容长度
                    System.out.println("Response content length: " + entity.getContentLength());
                    // 打印响应内容
                    System.out.println("Response content: " + EntityUtils.toString(entity));
                }
                System.out.println("------------------------------------");
            } finally {
                response.close();
            }
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (ParseException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            // 关闭连接,释放资源
            try {
                httpclient.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

SpringBoot之httpclient使用

超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。而HttpClient是可以支持http相关协议的工具包

它有如下功能:

1.实现了所有的http方法(GET,POST,PUT,HEAD 等)

2.支持自动转向

3.支持 https 协议

4.支持代理服务器

既然HttpClient使用这么广泛,则本文讲解下Spring Boot 中怎么使用HttpClient.如下:

引入相关依赖

       <!-- http所需包 -->
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpcore</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpmime</artifactId>
        </dependency>
         <!-- /http所需包 -->
         <!-- 数据解析所需包 -->   
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.4</version>
        </dependency>
        <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>2.6</version>
        </dependency>   
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.4</version>
        </dependency>
        <!-- /数据解析所需包 -->   

编写相关工具类

写个http的工具类,以便业务代码直接调用,如下:


public class HttpUtils {
    
    @SuppressWarnings("deprecation")
    public static String doPost(String url, String data) {
        CloseableHttpClient httpClient = HttpClients.createDefault();
        HttpPost httpPost = new HttpPost(url);
        RequestConfig requestConfig = RequestConfig.custom()
                .setSocketTimeout(10000).setConnectTimeout(20000)
                .setConnectionRequestTimeout(10000).build();
        httpPost.setConfig(requestConfig);
        String context = StringUtils.EMPTY;
        if (!StringUtils.isEmpty(data)) {
            StringEntity body = new StringEntity(data, "utf-8");
            httpPost.setEntity(body);
        }
        // 设置回调接口接收的消息头
        httpPost.addHeader("Content-Type", "application/json");
        CloseableHttpResponse response = null;
        try {
            response = httpClient.execute(httpPost);
            HttpEntity entity = response.getEntity();
            context = EntityUtils.toString(entity, HTTP.UTF_8);
        } catch (Exception e) {
            e.getStackTrace();
        } finally {
            try {
                response.close();
                httpPost.abort();
                httpClient.close();
            } catch (Exception e) {
                e.getStackTrace();
            }
        }
        return context;
    }
    
    public static Map<String, String> getRequestParam(String url) {
        Map<String, String> map = new HashMap<String, String>();
        String[] arrSplit = null;
        // 每个键值为一组
        arrSplit = url.split("[&]");
        for (String strSplit : arrSplit) {
            String[] arrSplitEqual = null;
            arrSplitEqual = strSplit.split("[=]");
            // 解析出键值
            if (arrSplitEqual.length > 1) {
                // 正确解析
                map.put(arrSplitEqual[0], arrSplitEqual[1]);
            } else {
                if (arrSplitEqual[0] != "") {
                    map.put(arrSplitEqual[0], "");
                }
            }
        }
        return map;
    }
}

业务代码中使用

业务中代码使用,拼装请求Url和请求数据,就可以调用工具类里的doPost()方法开始直接使用咯。如下:

private String getFileStorePath(String courtId, String seesionId){
        String fileStorePath = StringUtils.EMPTY;
        //请求参数
        String data = "{\"courtId\":\"" + courtId + "\",\"sessionId\":\"" + seesionId + "\"}";
        String fileServiceUrl="http://111.11.11.11:8086";
        //发送请求,获取结果
        String result = HttpUtils.doPost(fileServiceUrl + "/ms-service/voice/search", data);    
        if(StringUtils.isNotBlank(result)){
            com.alibaba.fastjson.JSONObject jsonobject = JSON.parseObject(result);
            fileStorePath = jsonobject.getString("path");
            logger.info("fileStorePath = " + fileStorePath);
        }
        return fileStorePath;
    }

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: SpringBoot接口开发教程(httpclient客户端)

本文链接: https://www.lsjlt.com/news/141815.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SpringBoot接口开发教程(httpclient客户端)
    目录SpringBoot接口开发服务端客户端post请求get请求SpringBoot之httpclient使用引入相关依赖编写相关工具类业务代码中使用SpringBoot接口开发 ...
    99+
    2024-04-02
  • PHP开发API客户端之接口调用流程浅析
    当开发Web应用程序时,经常需要在应用程序中使用其他服务或应用程序提供的功能。在这种情况下,我们之间通过接口进行通信并获取所需的信息或执行所需的操作。在本文中,我们将关注使用PHP编写API客户端的开发者所需了解的接口调用流程。步骤1:使用...
    99+
    2023-05-14
  • Python区块链客户端类开发教程
    目录开发客户端客户端类客户端测试客户端开发客户端 客户是持有TPCoins并从网络上的其他供应商处交换商品/服务的客户,包括他自己的.我们应该为此目的定义 Client&n...
    99+
    2024-04-02
  • Python asyncore socket客户端开发基本使用教程
    目录介绍1.定义类并且继承 asyncore.dispatcher2.实现类中的回调代码调用父类方法创建 socket 对象连接服务器3.创建对象并且执行 asyncore.loop...
    99+
    2022-12-26
    Python asyncore socket使用 Python asyncore socket Python asyncore 
  • Trojan客户端使用教程
    Trojan客户端使用教程 此教程使用的是 Centos7 x86_64系统 1.开启Trojan客户端代理服务 使用此命令下载Trojan客户端 官方版本(GitHub): cd /usr/sr...
    99+
    2023-09-01
    linux 服务器 windows
  • 使用.NETMAUI开发ChatGPT客户端的流程
    目录开发实战托盘图标(右键点击有 menu)WebView【重点】js 和 csharp 互相调用chatgpt 的开放 api 调用最近 chatgpt 很火,...
    99+
    2022-12-21
    .NET MAUI 开发 ChatGPT .NET MAUI 开发
  • PHP MQTT客户端开发指南
    MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息传输协议,通常用于物联网设备之间的通信。PHP是一种常用的服务器端编程语言,可以用来...
    99+
    2024-04-02
  • Win7VNC客户端连接RedHatLinuxAS5.8的配置图文教程
      1、配置安装VNC   [root@guoDB2 Disk1]# yum install vnc*   4、登录报错如下   5、查VNC端口   tcp 0 0 0.0.0.0:5901 0.0.0.0:* LI...
    99+
    2023-06-04
    Win7 VNC RedHatLinuxAS5.8 配置 NC 客户端 教程 图文
  • vue开发客户端如何配置
    这篇文章主要介绍了vue开发客户端如何配置的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue开发客户端如何配置文章都会有所收获,下面我们一起来看看吧。修改仓库源由于electron版本的未知性,可能存在ser...
    99+
    2023-07-04
  • python网络-TFTP客户端开发(2
    一、 TFTP协议介绍 TFTP(Trivial File Transfer Protocol,简单文件传输协议) 是TCP/IP协议族中的一个用来在客户端与服务器之间进行简单文件传输的协议 特点: 简单 占用资源小 适合传递小文件 适...
    99+
    2023-01-31
    客户端 网络 python
  • 【三】SpringBoot开发WebService接口
    SpringBoot开发WebService接口 一、服务端开发 1、引入依赖 org.springframework.boot ...
    99+
    2023-09-04
    spring boot java
  • CentOS怎么安装Git客户端(教程)
    Git是一种分布式版本控制系统,被广泛用于软件开发。在CentOS系统中,我们可以使用yum安装Git服务器,但是要在本地电脑上使用Git,还需要安装Git客户端。在本文中,我们将介绍如何在CentOS系统上安装Git客户端。步骤一:更新系...
    99+
    2023-10-22
  • Django 博客开发教程 15 -
    在 使用 Nginx 和 Gunicorn 部署 Django 博客 中,我们通过手工方式将代码部署到了服务器。整个过程涉及到十几条命令,输了 N 个字符。一旦我们本地的代码有更新,整个过程又得重复来一遍,这将变得非常繁琐。 使用 Fab...
    99+
    2023-01-31
    教程 博客 Django
  • java socket Server TCP服务端向指定客户端发送消息;可查看、断开指定连接的客户端;以及设置客户端最大可连接数量。
    文章目录 实现思路项目源码小结 实现思路 首先需要知道java里如何创建一个Socket服务器端。 //创建一个服务器端对象ServerSocket server = new Serv...
    99+
    2023-10-04
    java tcp/ip 网络协议
  • Java客户端开发的方法是什么
    这篇文章主要讲解了“Java客户端开发的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java客户端开发的方法是什么”吧!这一步是对之前进行较大的改动。增加的类也比较多。包结构如下...
    99+
    2023-06-17
  • Go gRPC服务客户端流式RPC教程
    目录前言情景模拟:客户端大量数据上传到服务端新建proto文件创建Server端创建Client端思考总结前言 上一篇介绍了服务端流式RPC,客户端发送请求到服务器,拿到一个流去读取...
    99+
    2024-04-02
  • vue3+electron12+dll开发客户端配置详解
    目录修改仓库源启动更换vue-devtools注意事项无边框窗口前后台通知写在最后当前使用的版本为 @vue/cli4 创建的 vue3.0 + typescript + elect...
    99+
    2024-04-02
  • Python区块链客户端类如何开发
    这篇文章主要介绍“Python区块链客户端类如何开发”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python区块链客户端类如何开发”文章能帮助大家解决问题。开发客户端客户是持有TPCoins并从网...
    99+
    2023-06-30
  • SSH客户端连接远程服务器
    目录 一、什么是客户端连接远程服务器 二、什么是服务端连接远程服务器 三、查看网络信息 1、图形程序查看网络信息 2、命令查看网络信息 四、SSH客户端(Linux) 五、SSH客户端(windows) 六、SSH远程服务器 一、什么是...
    99+
    2023-09-20
    ssh 服务器 运维 linux
  • Redis怎么远程连接Redis客户端
    本篇内容主要讲解“Redis怎么远程连接Redis客户端”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Redis怎么远程连接Redis客户端”吧!一 进入redis下的目录二 启动 redis服...
    99+
    2023-07-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作