Java 中使用 OkHttpClent 请求接口 get方式 post方式

这篇具有很好参考价值的文章主要介绍了Java 中使用 OkHttpClent 请求接口 get方式 post方式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

学习记录,不喜勿喷

什么是OkHttp

 一般在Java平台上,我们会使用Apache HttpClient作为Http客户端,用于发送 HTTP 请求,并对响应进行处理。比如可以使用http客户端与第三方服务(如SSO服务)进行集成,当然还可以爬取网上的数据等。OKHttp与HttpClient类似,也是一个Http客户端,提供了对 HTTP/2 和 SPDY 的支持,并提供了连接池,GZIP 压缩和 HTTP 响应缓存功能。

OkHttp优点

(1)支持HTTP2/SPDY(SPDY是Google开发的基于TCP的传输层协议,用以最小化网络延迟,提升网络速度,优化用户的网络使用体验)
(2)socket自动选择最好路线,并支持自动重连,拥有自动维护的socket连接池,减少握手次数,减少了请求延迟,共享Socket,减少对服务器的请求次数
(3)基于Headers的缓存策略减少重复的网络请求
(4)拥有Interceptors轻松处理请求与响应(自动处理GZip压缩)

OkHttp功能

(1)一般的get请求
(2)一般的post请求
(3)基于Http的文件上传
(4)文件下载
(5)上传下载的进度回调
(6)加载图片
(7)支持请求回调,直接返回对象、对象集合
(8)支持session的保持
(9)支持自签名网站https的访问,提供方法设置下证书就行
(10)支持取消某个请求

测试数据接口

package com.waves.controller;

import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@RestController
@RequestMapping("/dataApi")
public class ResponseDataController {

    @GetMapping("/getData")
    public Map<String,Object> getData(@RequestParam("pageIndex")String pageIndex){
        Map<String,Object>  map = new HashMap<>();
        map.put("username","小明");
        map.put("password","123456");
        map.put("age","18");
        map.put("endSchool","中国北京大学");
        List<Map<String,Object>> list = new ArrayList<>();
        list.add(map);
        Map<String,Object>  map2 = new HashMap<>();
        map2.put("total",list.size());
        map2.put("code",200);
        map2.put("data",list);

        return map2;
    }

    @PostMapping("/postData")
    public Map<String,Object> postData(@RequestBody  Map<String,Object> params){
        Map<String,Object>  map = new HashMap<>();
        map.put("username","小红");
        map.put("password","123456");
        map.put("age","18");
        map.put("school","中国北京大学");
        List<Map<String,Object>> list = new ArrayList<>();
        list.add(map);
        Map<String,Object>  map2 = new HashMap<>();
        map2.put("total",list.size());
        map2.put("code",200);
        map2.put("data",list);

        return map2;
    }
}

OkHttp POST请求接口

package com.waves.controller;

import com.alibaba.fastjson.JSONObject;
import okhttp3.MediaType;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import org.springframework.web.bind.annotation.*;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;


@RestController
@RequestMapping("/okHttpApi")
public class OkHttpController {

    @PostMapping("/okHttpPost")
    public Map<String,Object> okHttpPost(@RequestBody Map<String,Object> params){

        try {
            //json字符串的两种形式
            String k =  "{\n" +
                    "\t\"pageIndex\": \"1\",\n" +
                    "\t\"pageSize\": \"10\",\n" +
                    "\t\"userName\": \"xiaoming\"\n" +
                    "}";

            JSONObject json2 =  new JSONObject();
            json2.put("pageIndex","1");
            json2.put("pageSize","20");
            json2.put("userName","xiaoming");

            //创建一个OkHttpClient
            OkHttpClient client = new OkHttpClient();
            //设置请求头
            MediaType mediaType = MediaType.parse("application/json");
            //请求体
            okhttp3.RequestBody requestBody = okhttp3.RequestBody.create(mediaType,k);
            //创建一个request
            Request request = new Request.Builder()
                            .post(requestBody)
                            .url("http://localhost:8080/dataApi/postData")
                            .addHeader("content-type","application/json")
                            .build();
            //获得返回
            Response response = client.newCall(request).execute();
            if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);
            //获取返回值
            String responseData = response.body().string();
            //将json字符串转为JSONObject
            JSONObject data =   JSONObject.parseObject(responseData);
            //将jsonObject 转为Map
            Map<String,Object> map2 = data.toJavaObject(Map.class);
            return map2;
        }catch (Exception e){
            return new HashMap<>();
        }

    }

}

OkHttp GET方式请求接口

    @GetMapping("/okHttpGet")
    public Map<String,Object> okHttpGet(@RequestBody Map<String,Object> params){

        try {
            OkHttpClient client = new OkHttpClient();
            Request request = new Request.Builder()
                    .get()
                    .url("http://localhost:8080/dataApi/getData?pageIndex=1")
//                    .addHeader("content-type","application/json")
                    .build();
            Response response = client.newCall(request).execute();
            if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);
            //获取返回值
            String responseData = response.body().string();
            //将json字符串转为JSONObject
            JSONObject data =   JSONObject.parseObject(responseData);
            //将jsonObject 转为Map
            Map<String,Object> map2 = data.toJavaObject(Map.class);
            return map2;
        }catch (Exception e){
            return new HashMap<>();
        }

    }

 

 项目所需pom(依赖)

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.waves</groupId>
    <artifactId>waves_okhttp</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>waves_okhttp</name>
    <description>Okhtp project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <spring-boot.version>2.3.7.RELEASE</spring-boot.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.72</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.squareup.okhttp3/okhttp -->
        <dependency>
            <groupId>com.squareup.okhttp3</groupId>
            <artifactId>okhttp</artifactId>
            <version>4.9.1</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.3.7.RELEASE</version>
                <configuration>
                    <mainClass>com.waves.WavesOkhttpApplication</mainClass>
                </configuration>
                <executions>
                    <execution>
                        <id>repackage</id>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

 文章来源地址https://www.toymoban.com/news/detail-517762.html

到了这里,关于Java 中使用 OkHttpClent 请求接口 get方式 post方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 原生js创建get/post请求以及封装方式、axios的基本使用

    原生js创建get请求 原生js创建post请求 原生get和post封装方式1 原生get和post封装方式2 axios的基本使用

    2024年02月21日
    浏览(42)
  • java中使用hutool调用get请求,post请求

    一、hutool工具包实现 1、get请求 2、post请求 二、java net实现 1、java中http协议调用get请求 2、java中https协议调用get请求

    2024年02月11日
    浏览(41)
  • 使用接口调试软件(PostMan和APIPost)的技巧和注意事项(附加Get和Post请求区别)

    看完这篇文章,不仅能学会使用接口调试软件,还能 高效 的生成接口说明文档 首先,先来告诉各位Get请求和Post请求的区别 (记住:除了标注是Post的请求,其他都是Get请求) Get请求有: (1). form标签method=get (2). a标签 (3). Iink标签引入css (4). Script标签引入js文件 (5). img标签引入

    2024年04月12日
    浏览(47)
  • C# Http 请求接口 Get / Post

    目录 一、概述 二、创建 Web API  三、HttpRequestHelper 三、测试 结束 get 和 post 请求,最早被用来做浏览器与服务器之间交互HTML和表单的通讯协议,后来又被广泛的扩充到接口格式的定义上,到目前为止,get / post 请求依然应用在各大网站中,比如在用户登录时,调用 get / post 

    2024年02月11日
    浏览(50)
  • HTTP中get和post请求方式

    #get和post特点 get请求: 请求参数在请求地址后面,提交的数据量较小,安全性较差,不建议用来提交敏感信息(地址栏中会显示,并且有可能被保存请求地址)。 功能:GET 方法用于获取由 Request-URI 所标识的资源的信息 默认方法: GET方法是默认的HTTP请求方法 ,例如当我们

    2024年04月26日
    浏览(46)
  • Postman接口测试之POST、GET请求方法

    1.HTTP的五种请求方法 :GET, POST ,HEAD,OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。 2.接口调用传参方式 :key-value参数形式,Json串传参形式。 key-value参数:把参数拼接在url的后面由?相连,多个参数之间用相连。 Json串传参:需要在请求的body写中,入Json格式参数。 功能说明:

    2023年04月08日
    浏览(67)
  • SqlServer--get 和 post 请求 http接口

    不开启报错 如下 4.1 SQL Server blocked access to procedure ‘sys.sp_OACreate’ 解决方案-参考链接

    2024年03月26日
    浏览(53)
  • http之GET请求和POST请求的传递参数的方式

    get: 情况1:接口正常返回 code,data,message ,且无需传递参数 (vu3) 情况2: 需要将参数拼接到url地址上 (vue3)   情况3 需要传递参数,query 传参 (vue3) 情况4 既有query传参也有path传参 post 情况1 接口返回的数据没有使用data包裹,这种情况一般取不到数据,我们需要用 ext

    2024年02月16日
    浏览(44)
  • 接口自动化测试Mock Get和Post请求

    Mock可以模拟一个http接口的后台响应,可以模拟request,response  下载 moco-runner-0.11.0-standalone.jar 下载链接: https://pan.baidu.com/s/1bmFzvJPRnDlQ-cmuJ_3iRg 提取码: kpjv 确保安装了jdk,cmd下可以运行java -version 一、模拟不带参的get请求 #代码中的description行可以不写;一般结构为description,requ

    2024年02月13日
    浏览(56)
  • 前端post,get请求传参方式 以及后台接收

    post请求: 1:js中 2:使用 首先引入方法js: 调用方法 3:浏览器请求 4:后台参数接收 get请求: 第一种:通过params对象传递,将参数以键值对的形式传递,当传递的参数为多个时,浏览器会自动拼接进行分割 1:js中 2:使用 首先引入方法js: 调用方法 3:浏览器请求 4:后台

    2024年02月10日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包