最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java實(shí)現(xiàn)HttpGet請(qǐng)求傳body參數(shù)

 更新時(shí)間:2024年02月02日 08:38:26   作者:余生一個(gè)帆  
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)HttpGet請(qǐng)求傳body參數(shù)的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下

前言

最近調(diào)用公司項(xiàng)目一個(gè)接口時(shí),發(fā)現(xiàn)該接口是一個(gè)Get請(qǐng)求,入?yún)⒃贐ody 中(json格式)。場(chǎng)景如下:A服務(wù)需發(fā)送http請(qǐng)求調(diào)用B服務(wù)的接口(該接口為Get方式,入?yún)⑹且粋€(gè)json字符串在body中傳遞)

當(dāng)我看到這個(gè)接口的時(shí)候,感覺好奇怪(MMP,干嘛不用POST請(qǐng)求。Get就get,請(qǐng)求還放Body中,心里有些不爽)盡管心里不爽,但是也只能默默接受,擼起袖子 “干” 就完了!

實(shí)現(xiàn)過程

首先官方不推薦這樣做,但是http(基于tcp的超文本傳輸協(xié)議)并沒有規(guī)定,Get 請(qǐng)求不能加body

一.首先我寫了一個(gè)Get請(qǐng)求接口,本地測(cè)試一下,便于大家直觀的理解

調(diào)用成功:

本地使用postman調(diào)用是成功的,接下來我們使用Java代碼請(qǐng)求調(diào)用

二.使用Http工具類調(diào)用Get請(qǐng)求(json參數(shù))

1.引入httpclient 依賴

       <!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient -->
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5.6</version>
        </dependency>

2.定義一個(gè)HttpGet實(shí)體類

import org.apache.http.client.methods.HttpEntityEnclosingRequestBase;
import java.net.URI;
/**
 * @author xf
 * @version 1.0.0
 * @ClassName HttpGetWithEntity
 * @Description TODO 定義一個(gè)帶body的GET請(qǐng)求 繼承 HttpEntityEnclosingRequestBase
 * @createTime 2020.11.18 13:51
 */
public class HttpGetWithEntity extends HttpEntityEnclosingRequestBase {
    private final static String METHOD_NAME = "GET";

???????    @Override
    public String getMethod() {
        return METHOD_NAME;
    }
    public HttpGetWithEntity() {
        super();
    }
    public HttpGetWithEntity(final URI uri) {
        super();
        setURI(uri);
    }
    HttpGetWithEntity(final String uri) {
        super();
        setURI(URI.create(uri));
    }

}

3.HttpGet請(qǐng)求公共方法

    /**
     * 發(fā)送get請(qǐng)求,參數(shù)為json
     * @param url
     * @param param
     * @param encoding
     * @return
     * @throws Exception
     */
    public static String sendJsonByGetReq(String url, String param, String encoding) throws Exception {
        String body = "";
        //創(chuàng)建httpclient對(duì)象
        CloseableHttpClient client = HttpClients.createDefault();
        HttpGetWithEntity httpGetWithEntity = new HttpGetWithEntity(url);
        HttpEntity httpEntity = new StringEntity(param, ContentType.APPLICATION_JSON);
        httpGetWithEntity.setEntity(httpEntity);
        //執(zhí)行請(qǐng)求操作,并拿到結(jié)果(同步阻塞)
        CloseableHttpResponse response = client.execute(httpGetWithEntity);
        //獲取結(jié)果實(shí)體
        HttpEntity entity = response.getEntity();
        if (entity != null) {
            //按指定編碼轉(zhuǎn)換結(jié)果實(shí)體為String類型
            body = EntityUtils.toString(entity, encoding);
        }
        //釋放鏈接
        response.close();
        return body;
    }

4.運(yùn)行服務(wù),本地測(cè)試調(diào)用一下該接口

    /**
     * 測(cè)試 Get 請(qǐng)求
     */
    @Test
    public void test(){
        String url = "http://127.0.0.1:8012/export/getByBodyJson";
        Map<String, Object> map = new HashMap<>();
        map.put("stuName","張一山");
        map.put("school","北京戲劇學(xué)院");
        String reqParams = JSONArray.toJSON(map).toString();
        try {
            String s = sendJsonByGetReq(url, reqParams, "UTF-8");
            System.out.println("請(qǐng)求Get請(qǐng)求返回結(jié)果:"+s);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

三.使用HttpGet請(qǐng)求發(fā)送body入?yún)⒄{(diào)用成功

盡管這樣解決了get 加body 體傳參,但是仍建議大家使用post 加body!

到此這篇關(guān)于Java實(shí)現(xiàn)HttpGet請(qǐng)求傳body參數(shù)的文章就介紹到這了,更多相關(guān)Java HttpGet請(qǐng)求傳body參數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot實(shí)現(xiàn)多數(shù)據(jù)源連接和切換的完整方案

    SpringBoot實(shí)現(xiàn)多數(shù)據(jù)源連接和切換的完整方案

    在 Spring Boot 中實(shí)現(xiàn)多數(shù)據(jù)源連接和切換,可以通過以下幾種方案來實(shí)現(xiàn),具體取決于項(xiàng)目的需求、數(shù)據(jù)庫(kù)的使用模式和管理的復(fù)雜性,大家可以根據(jù)需要進(jìn)行選擇
    2025-11-11
  • springboot+vue實(shí)現(xiàn)SSE服務(wù)器發(fā)送事件的示例

    springboot+vue實(shí)現(xiàn)SSE服務(wù)器發(fā)送事件的示例

    本文介紹了使用Spring Boot和Vue實(shí)現(xiàn)服務(wù)器發(fā)送事件,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-01-01
  • Java插件擴(kuò)展機(jī)制之SPI案例講解

    Java插件擴(kuò)展機(jī)制之SPI案例講解

    這篇文章主要介紹了Java插件擴(kuò)展機(jī)制之SPI案例講解,本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • SpringBoot項(xiàng)目整合OpenFeign啟動(dòng)失敗及運(yùn)行時(shí)常見錯(cuò)誤解決方案

    SpringBoot項(xiàng)目整合OpenFeign啟動(dòng)失敗及運(yùn)行時(shí)常見錯(cuò)誤解決方案

    文章總結(jié)了在使用Feign進(jìn)行服務(wù)調(diào)用時(shí)可能遇到的常見問題及其解決方案,涵蓋了依賴配置、接口定義、運(yùn)行時(shí)錯(cuò)誤和其它常見問題的解決方法,建議使用兼容的版本、統(tǒng)一的包名結(jié)構(gòu),并為接口方法添加HTTP注解,感興趣的朋友跟隨小編一起看看吧
    2026-01-01
  • Java中5種輸出換行方式小結(jié)

    Java中5種輸出換行方式小結(jié)

    在Java中,輸出換行符是一項(xiàng)非常基本的操作,它在控制臺(tái)中輸出文本時(shí)非常常見,本文主要介紹了Java中5種輸出換行方式小結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-02-02
  • spring cloud gateway 如何修改請(qǐng)求路徑Path

    spring cloud gateway 如何修改請(qǐng)求路徑Path

    這篇文章主要介紹了spring cloud gateway 修改請(qǐng)求路徑Path的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • maven安裝、使用、配置本地倉(cāng)庫(kù)、idea配置maven以及解決plugins報(bào)錯(cuò)問題

    maven安裝、使用、配置本地倉(cāng)庫(kù)、idea配置maven以及解決plugins報(bào)錯(cuò)問題

    本地倉(cāng)庫(kù)是遠(yuǎn)程倉(cāng)庫(kù)的一個(gè)緩沖和子集,當(dāng)你構(gòu)建Maven項(xiàng)目時(shí)首先會(huì)從本地倉(cāng)庫(kù)查找資源,如果沒有那么Maven會(huì)從遠(yuǎn)程倉(cāng)庫(kù)下載到你本地倉(cāng)庫(kù),這篇文章主要給大家介紹了關(guān)于maven安裝、使用、配置本地倉(cāng)庫(kù)、idea配置maven以及解決plugins報(bào)錯(cuò)問題的相關(guān)資料,需要的朋友可以參考下
    2024-01-01
  • Eclipse 使用Maven構(gòu)建SpringMVC項(xiàng)目

    Eclipse 使用Maven構(gòu)建SpringMVC項(xiàng)目

    本文主要介紹在Eclipse下創(chuàng)建Maven項(xiàng)目構(gòu)建SpringMVC框架的過程,講解的比較詳細(xì),需要的朋友可以參考下。
    2016-06-06
  • Mybatis Plus 大數(shù)據(jù)游標(biāo)分頁(yè)的實(shí)現(xiàn)

    Mybatis Plus 大數(shù)據(jù)游標(biāo)分頁(yè)的實(shí)現(xiàn)

    使用MyBatis Plus的游標(biāo)分頁(yè),我們可以輕松應(yīng)對(duì)大數(shù)據(jù)量的場(chǎng)景,本文主要介紹了Mybatis Plus 大數(shù)據(jù)游標(biāo)分頁(yè)的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-07-07
  • Springboot項(xiàng)目中定時(shí)任務(wù)的四種實(shí)現(xiàn)方式詳解

    Springboot項(xiàng)目中定時(shí)任務(wù)的四種實(shí)現(xiàn)方式詳解

    Spring的@Scheduled注解是一種非常簡(jiǎn)單和便捷的實(shí)現(xiàn)定時(shí)任務(wù)的方式,通過在方法上添加@Scheduled注解,我們可以指定方法在特定的時(shí)間間隔或固定的時(shí)間點(diǎn)執(zhí)行,本文給大家介紹Springboot項(xiàng)目中定時(shí)任務(wù)的四種實(shí)現(xiàn)方式,感興趣的的朋友一起看看b
    2024-02-02

最新評(píng)論

霍林郭勒市| 黔东| 澄城县| 江安县| 灵山县| 河曲县| 林西县| 康保县| 石林| 罗江县| 旺苍县| 芦溪县| 金乡县| 宜宾市| 大田县| 庆安县| 海晏县| 古交市| 富源县| 诸暨市| 和田市| 大田县| 都安| 商城县| 乌兰县| 周至县| 抚远县| 和静县| 邹平县| 纳雍县| 清苑县| 竹山县| 凤台县| 上饶县| 柳林县| 凤凰县| 丰原市| 龙州县| 商洛市| 紫金县| 蓝田县|