国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Java請(qǐng)求Http接口-hutool的HttpUtil(超詳細(xì)-附帶工具類(lèi))

這篇具有很好參考價(jià)值的文章主要介紹了Java請(qǐng)求Http接口-hutool的HttpUtil(超詳細(xì)-附帶工具類(lèi))。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

概述

HttpUtil是應(yīng)對(duì)簡(jiǎn)單場(chǎng)景下Http請(qǐng)求的工具類(lèi)封裝,此工具封裝了HttpRequest對(duì)象常用操作,可以保證在一個(gè)方法之內(nèi)完成Http請(qǐng)求。

此模塊基于JDK的HttpUrlConnection封裝完成,完整支持https、代理和文件上傳。

導(dǎo)包

        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.7.1</version>
        </dependency>

讀取頁(yè)面,返回整個(gè)頁(yè)面內(nèi)容報(bào)文

針對(duì)最為常用的GET和POST請(qǐng)求,HttpUtil封裝了兩個(gè)方法,

  • HttpUtil.get
  • HttpUtil.post
    這兩個(gè)方法用于請(qǐng)求普通頁(yè)面,然后返回頁(yè)面內(nèi)容的字符串,同時(shí)提供一些重載方法用于指定請(qǐng)求參數(shù)(指定參數(shù)支持File對(duì)象,可實(shí)現(xiàn)文件上傳,當(dāng)然僅僅針對(duì)POST請(qǐng)求)。

get 請(qǐng)求頁(yè)面

	// 最簡(jiǎn)單的HTTP請(qǐng)求,可以自動(dòng)通過(guò)header等信息判斷編碼,不區(qū)分HTTP和HTTPS
String result1= HttpUtil.get("https://www.baidu.com");

// 當(dāng)無(wú)法識(shí)別頁(yè)面編碼的時(shí)候,可以自定義請(qǐng)求頁(yè)面的編碼
String result2= HttpUtil.get("https://www.baidu.com", CharsetUtil.CHARSET_UTF_8);

//可以單獨(dú)傳入http參數(shù),這樣參數(shù)會(huì)自動(dòng)做URL編碼,拼接在URL中
HashMap<String, Object> paramMap = new HashMap<>();
paramMap.put("city", "北京");

String result3= HttpUtil.get("https://www.baidu.com", paramMap);

返回結(jié)果:
Java請(qǐng)求Http接口-hutool的HttpUtil(超詳細(xì)-附帶工具類(lèi)),項(xiàng)目工具類(lèi)及問(wèn)題解決,JavaWeb,java,http,開(kāi)發(fā)語(yǔ)言

post 請(qǐng)求頁(yè)面

HashMap<String, Object> paramMap = new HashMap<>();
paramMap.put("city", "北京");

String result= HttpUtil.post("https://www.baidu.com", paramMap);

上傳文件

HashMap<String, Object> paramMap = new HashMap<>();
//文件上傳只需將參數(shù)中的鍵指定(默認(rèn)file),值設(shè)為文件對(duì)象即可,對(duì)于使用者來(lái)說(shuō),文件上傳與普通表單提交并無(wú)區(qū)別
paramMap.put("file", FileUtil.file("D:\\face.jpg"));

String result= HttpUtil.post("https://www.baidu.com", paramMap);

下載文件

因?yàn)镠utool-http機(jī)制問(wèn)題,請(qǐng)求頁(yè)面返回結(jié)果是一次性解析為byte[]的,如果請(qǐng)求URL返回結(jié)果太大(比如文件下載),那內(nèi)存會(huì)爆掉,因此針對(duì)文件下載HttpUtil單獨(dú)做了封裝。文件下載在面對(duì)大文件時(shí)采用流的方式讀寫(xiě),內(nèi)存中只是保留一定量的緩存,然后分塊寫(xiě)入硬盤(pán),因此大文件情況下不會(huì)對(duì)內(nèi)存有壓力。

String fileUrl = "http://mirrors.sohu.com/centos/8.4.2105/isos/x86_64/CentOS-8.4.2105-x86_64-dvd1.iso";

//將文件下載后保存在E盤(pán),返回結(jié)果為下載文件大小
long size = HttpUtil.downloadFile(fileUrl, FileUtil.file("e:/"));
System.out.println("Download size: " + size);

當(dāng)然,如果我們想感知下載進(jìn)度,還可以使用另一個(gè)重載方法回調(diào)感知下載進(jìn)度:

//帶進(jìn)度顯示的文件下載
HttpUtil.downloadFile(fileUrl, FileUtil.file("e:/"), new StreamProgress(){
    
    @Override
    public void start() {
        Console.log("開(kāi)始下載。。。。");
    }
    
    @Override
    public void progress(long progressSize) {
        Console.log("已下載:{}", FileUtil.readableFileSize(progressSize));
    }
    
    @Override
    public void finish() {
        Console.log("下載完成!");
    }
});

其他方法

  • HttpUtil.encodeParams 對(duì)URL參數(shù)做編碼,只編碼鍵和值,提供的值可以是url附帶參數(shù),但是不能只是url
  • HttpUtil.toParams和HttpUtil.decodeParams 兩個(gè)方法是將Map參數(shù)轉(zhuǎn)為URL參數(shù)字符串和將URL參數(shù)字符串轉(zhuǎn)為Map對(duì)象
  • HttpUtil.urlWithForm是將URL字符串和Map參數(shù)拼接為GET請(qǐng)求所用的完整字符串使用
  • HttpUtil.getMimeType 根據(jù)文件擴(kuò)展名快速獲取其MimeType(參數(shù)也可以是完整文件路徑)

resul 接口

本質(zhì)上,HttpUtil中的get和post工具方法都是HttpRequest對(duì)象的封裝,因此如果想更加靈活操作Http請(qǐng)求,可以使用HttpRequest。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-657899.html

get請(qǐng)求

public static JSONObject get(String url, Map<String, Object> queryParams, Map<String, String> headers) throws IOException {
        String body = HttpRequest.get(url).form(queryParams).addHeaders(headers).execute().body();
        return JSONObject.parseObject(body);
    }

post 表單請(qǐng)求

 public static JSONObject post(String url, Map<String, Object> queryParams, Map<String, String> headers) {
        String body = HttpRequest.post(url)
                .header(Header.USER_AGENT, "Hutool http")//頭信息,多個(gè)頭信息多次調(diào)用此方法即可
                .form(queryParams)//表單內(nèi)容
                .timeout(20000)//超時(shí),毫秒
                .execute().body();
        return JSONObject.parseObject(body);
    }

post -json 請(qǐng)求

 public static JSONObject post(String url, String json, Map<String, String> headers) {
        String body = HttpRequest.post(url).body(json).addHeaders(headers).execute().body();
        return JSONObject.parseObject(body);
    }

配置代理

String result2 = HttpRequest.post(url)
    .setHttpProxy("127.0.0.1", 9080)
    .body(json)
    .execute().body();

到了這里,關(guān)于Java請(qǐng)求Http接口-hutool的HttpUtil(超詳細(xì)-附帶工具類(lèi))的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • java使用hutool工具類(lèi)發(fā)送http或者h(yuǎn)ttps請(qǐng)求太香啦

    我們使用java內(nèi)置的http工具實(shí)現(xiàn)遠(yuǎn)程調(diào)用的時(shí)候,都是用try catch包一堆代碼,巨難受,今天看見(jiàn)有人使用hutool工具類(lèi)那是天簡(jiǎn)單了呀,具體操作如下: 1,引入依賴(lài) 2, 如果不需要設(shè)置其他什么頭信息,代碼: 如果是https請(qǐng)求直接換url里面的http就行 返回信息格式: {\\\"code\\\":200

    2024年02月14日
    瀏覽(24)
  • hutool的httpUtil的使用(訪問(wèn)第三方接口)

    以下僅為自己項(xiàng)目中所寫(xiě)并能夠跑通 有問(wèn)題留言 如若不對(duì) 請(qǐng)指出告知一下

    2024年02月06日
    瀏覽(29)
  • cn.hutool.http.HttpUtil類(lèi)get方法不支持獲取重定向地址(避坑)

    問(wèn)題 工作中場(chǎng)景需要通過(guò)獲取url地址內(nèi)容,展示返回給客戶(hù)端,但上線后發(fā)現(xiàn)不滿(mǎn)足需求,原因是url地址進(jìn)行302重定向, 進(jìn)一步了解是因?yàn)镠ttpUtil.get方法不能獲取重定向地址,需要使用HttpUtil.createGet()來(lái)設(shè)置打開(kāi)重定; 理解302: 302 表示臨時(shí)性重定向,訪問(wèn)一個(gè)Url時(shí),被重定

    2024年02月01日
    瀏覽(25)
  • hutool Http 工具發(fā)送POST請(qǐng)求的幾種方式

    ? ? ? ? 目錄 依賴(lài) ??Maven ??Gradle 實(shí)踐 hutool源碼 hutool調(diào)用實(shí)踐 其它自定義項(xiàng) ????????本質(zhì)上,HttpUtil中的get和post工具方法都是HttpRequest對(duì)象的封裝,因此如果想更加靈活操作Http請(qǐng)求,可以使用HttpRequest。今天咱們就列舉一下hutool工具中常用的幾種發(fā)送post請(qǐng)求的方式。

    2024年02月08日
    瀏覽(23)
  • hutool Http 工具發(fā)送POST請(qǐng)求的幾種方式。

    Hutool是一個(gè)Java工具庫(kù),提供了豐富的功能模塊,包括HTTP請(qǐng)求發(fā)送。以下是使用Hutool發(fā)送POST請(qǐng)求的幾種方式: 使用HttpUtil.post方法: 使用HttpUtil.post方法可以發(fā)送簡(jiǎn)單的POST請(qǐng)求,示例如下: 使用HttpUtil.createPost方法: 使用HttpUtil.createPost方法可以創(chuàng)建一個(gè)HttpPost對(duì)象,然后設(shè)置

    2024年02月13日
    瀏覽(22)
  • Hutool工具包中HttpUtil的日志統(tǒng)一打印以及統(tǒng)一超時(shí)時(shí)間配置

    使用hutool工具包中的HttpUtil,為了便于排查問(wèn)題以及控制請(qǐng)求時(shí)間,每次都要在請(qǐng)求前后log日志,每次都需要設(shè)置超時(shí)時(shí)間,十分麻煩。 從HttpUtil的execute()方法點(diǎn)進(jìn)去幾步,可以看到以下代碼 這里有兩個(gè)攔截器配置,分別是請(qǐng)求攔截器配置config.requestInterceptors, 響應(yīng)攔截器配置

    2024年02月05日
    瀏覽(24)
  • 使用HuTool的Http工具發(fā)送post傳遞中文參數(shù),請(qǐng)求會(huì)亂碼的解決方法

    Hutool 是一款功能豐富、易用的Java工具類(lèi)庫(kù),我們?cè)诠ぷ髦薪?jīng)常會(huì)使用它的各種類(lèi)庫(kù)方法簡(jiǎn)化我們的開(kāi)發(fā),其中我們甚至能通過(guò)它的Http工具類(lèi)直接發(fā)送http的各種請(qǐng)求,下面來(lái)介紹一下發(fā)送post請(qǐng)求時(shí)參數(shù)中有中文出現(xiàn)亂碼的解決方法。 這樣就不會(huì)造成請(qǐng)求參數(shù)出現(xiàn)亂碼問(wèn)題

    2024年02月01日
    瀏覽(32)
  • 記一次使用hutool的http工具調(diào)用外部接口同步人員信息

    首先是TreeNodeVo實(shí)體 構(gòu)建目錄樹(shù)的工具類(lèi) 最后根據(jù)返回的集合生成目錄結(jié)構(gòu),主要設(shè)置treenodevo對(duì)象的id,pid,value,lable參數(shù) controller類(lèi) 前端vue+elementui,用級(jí)聯(lián)選擇器顯示目錄樹(shù) data中添加treeNodeVos對(duì)象 methods中添加后臺(tái)調(diào)用方法,此方法可以在點(diǎn)擊頁(yè)面加載時(shí)調(diào)用,看自己,還有

    2024年02月05日
    瀏覽(23)
  • 調(diào)用hutool包調(diào)用http接口處理文件流-文件的上傳下載工具類(lèi)

    hutool工具類(lèi)get請(qǐng)求獲取流: InputStream inputStream = HttpRequest.get(fileUrl).execute().bodyStream(); hutool工具類(lèi)post請(qǐng)求上傳文件流: String resp = HttpRequest.post(url).header(Header.CONTENT_TYPE.getValue(), ContentType.MULTIPART.getValue()).form(params).execute().body(); 完成代碼

    2024年01月17日
    瀏覽(27)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包