Bahagian 1: Ringkasan ringkas konfigurasi biasa permintaan HTTP
Bahagian 2: Menggunakan HttpUtils JavaLib
Bahagian 3: Kongsi bagaimana HttpUtils dikapsulkan
Permintaan HTTP agak biasa dalam pembangunan harian Hari ini saya akan berkongsi dengan anda cara menggunakan HttpUtils.
Membaca artikel ini, anda akan mendapat:
Ringkasan ringkas konfigurasi biasa permintaan HTTP; gunakan HttpUtils dalam JavaLib;
Cara untuk merangkum kelas alat permintaan HTTP.
Bahagian 1: Ringkasan ringkas konfigurasi biasa untuk permintaan HTTP
DAPATKAN
POST
PUT
PATCH
PADAM
Dalam pembangunan API RESTful, kami boleh mereka bentuk antara muka API kami berdasarkan kaedah permintaan ini. Contoh:
DAPATKAN: Dapatkan sumber
POST: Serahkan sumber
PUT: Kemas kini selesai Sumber
PATCH: Kemas kini beberapa sumber
DELETE: Padamkan sumber
Format parameter
borang borang
json
Lain-lain
Tetapan tamat masa
Bahagian 2: Menggunakan HttpUtils JavaLib
System.out.println(HttpUtils.get("https://www.baidu.com"));
<!DOCTYPE html><!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;charset=utf-8><meta http-equiv=X-UA-Compatible content=IE=Edge><meta content=always name=referrer><link rel=stylesheet type=text/css href=https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/bdorz/baidu.min.css><title>百度一下,你就知道</title></head> <body link=#0000cc> <div id=wrapper> <div id=head> <div class=head_wrapper> <div class=s_form> <div class=s_form_wrapper> <div id=lg> <img hidefocus=true src=//www.baidu.com/img/bd_logo1.png style="max-width:90%"Cara menggunakan HttpUtils untuk menghantar permintaan HTTP dalam Java" > </div> <form id=form name=f action=//www.baidu.com/s class=fm> <input type=hidden name=bdorz_come value=1> <input type=hidden name=ie value=utf-8> <input type=hidden name=f value=8> <input type=hidden name=rsv_bp value=1> <input type=hidden name=rsv_idx value=1> <input type=hidden name=tn value=baidu><span class="bg s_ipt_wr"><input id=kw name=wd class=s_ipt value maxlength=255 autocomplete=off autofocus=autofocus></span><span class="bg s_btn_wr"><input type=submit id=su value=百度一下 class="bg s_btn" autofocus></span> </form> </div> </div> <div id=u1> <a href=http://news.baidu.com name=tj_trnews class=mnav>新闻</a> <a href=https://www.hao123.com name=tj_trhao123 class=mnav>hao123</a> <a href=http://map.baidu.com name=tj_trmap class=mnav>地图</a> <a href=http://v.baidu.com name=tj_trvideo class=mnav>视频</a> <a href=http://tieba.baidu.com name=tj_trtieba class=mnav>贴吧</a> <noscript> <a href=http://www.baidu.com/bdorz/login.gif?login&tpl=mn&u=http%3A%2F%2Fwww.baidu.com%2f%3fbdorz_come%3d1 name=tj_login class=lb>登录</a> </noscript> <script>document.write('<a href="http://www.baidu.com/bdorz/login.gif?login&tpl=mn&u='+ encodeURIComponent(window.location.href+ (window.location.search === "" ? "?" : "&")+ "bdorz_come=1")+ '" name="tj_login" class="lb">登录</a>'); </script> <a href=//www.baidu.com/more/ name=tj_briicon class=bri >更多产品</a> </div> </div> </div> <div id=ftCon> <div id=ftConw> <p id=lh> <a href=http://home.baidu.com>关于百度</a> <a href=http://ir.baidu.com>About Baidu</a> </p> <p id=cp>©2017 Baidu <a href=http://www.baidu.com/duty/>使用百度前必读</a> <a href=http://jianyi.baidu.com/ class=cp-feedback>意见反馈</a> 京ICP证030173号 <img src=//www.baidu.com/img/gs.gif alt="Cara menggunakan HttpUtils untuk menghantar permintaan HTTP dalam Java" > </p> </div> </div> </div> </body> </html>
Melalui percubaan mudah , dua perkara dibuktikan:
Pertama, ini masih boleh digunakan, kedua, ternyata sangat mudah digunakan.
Jika anda diminta menulis permintaan http dengan tangan, anda mungkin kosong dalam fikiran anda dan mencari pelbagai maklumat.
Mari cuba kompleks lain
antara muka:
Alamat antara muka: https://erwin-api.fengwenyi.com/erwin/blog/page Kaedah permintaan: DAPATKAN
Parameter: Halaman semasa, Saiz halamanFormat parameter: borang
Respons: application/jsonrreee
Hasil respons :String url = "https://erwin-api.fengwenyi.com/erwin/bookmark/page?currentPage=1&pageSize=10"; Request request = new Request(); request.setUrl(url); request.setMethod(Request.Method.GET); Map<String, String> headerMap = new HashMap<>(); headerMap.put("Accept", "application/json"); Request.Option option = new Request.Option(); option.setHeaders(headerMap); try { System.out.println(HttpUtils.execute(request, option)); } catch (IOException e) { throw new RuntimeException(e); }Hasil sambutan masih sesuai dengan jangkaan.
Sudah tentu, terdapat aspek HTTP yang lain, seperti tamat masa, dsb. Mari kita lihat contoh permintaan lengkap:
{ "code":"SUCCESS", "message":"Success", "success":true, "header":null, "body":{ "currentPage":1, "pageSize":10, "totalRows":661, "totalPages":67, "content":[ { "id":"1634772578877935617", "timestamp":1678595130000, "enabledState":null, "name":"VScode 中文显示出现黄色方框的解决方法_vscode汉字被框住_YJer的博客-CSDN博客", "url":"https://blog.csdn.net/qq_33249042/article/details/123252625", "icon":null, "classifyName":"软件", "classifyId":"1522587269600481281" }, { "id":"1632640455110922241", "timestamp":1678086792000, "enabledState":null, "name":"Spring中init-method和destroy-method的四种方式_星夜孤帆的博客-CSDN博客", "url":"https://blog.csdn.net/qq_38826019/article/details/117387398", "icon":null, "classifyName":"Spring", "classifyId":"1522586360887742466" }, { "id":"1631597310596190209", "timestamp":1677838087000, "enabledState":null, "name":"vue3 + elemenplus实现导航栏 - 掘金", "url":"https://juejin.cn/post/7084871748608327687", "icon":null, "classifyName":"前端", "classifyId":"1525554881275990018" }, { "id":"1631593154401636354", "timestamp":1677837096000, "enabledState":null, "name":"Spring bean 创建过程源码解析 - 腾讯云开发者社区-腾讯云", "url":"https://cloud.tencent.com/developer/article/1631160", "icon":null, "classifyName":"Spring", "classifyId":"1522586360887742466" }, { "id":"1631592987673858050", "timestamp":1677837056000, "enabledState":null, "name":"SpringBoot之容器启动源码分析与Bean加载_springboot加载bean 源码_minemine0418的博客-CSDN博客", "url":"https://blog.csdn.net/minemine0418/article/details/102308912", "icon":null, "classifyName":"Spring Boot", "classifyId":"1522586446766116865" }, { "id":"1631586585454678018", "timestamp":1677835530000, "enabledState":null, "name":"Spring-Bean生命周期 - 知乎", "url":"https://zhuanlan.zhihu.com/p/158468104", "icon":null, "classifyName":"Spring", "classifyId":"1522586360887742466" }, { "id":"1631579732104548354", "timestamp":1677833896000, "enabledState":null, "name":"一文读懂 Spring Bean 的生命周期_spring bean的生命周期_老周聊架构的博客-CSDN博客", "url":"https://blog.csdn.net/riemann_/article/details/118500805", "icon":null, "classifyName":"Spring", "classifyId":"1522586360887742466" }, { "id":"1630768897186697218", "timestamp":1677640578000, "enabledState":null, "name":"MySQL同时统计多个条件的记录条数_ztnhnr的博客-CSDN博客", "url":"https://blog.csdn.net/ztnhnr/article/details/107165942", "icon":null, "classifyName":"MySQL", "classifyId":"1522586805693681666" }, { "id":"1630768792098410497", "timestamp":1677640553000, "enabledState":null, "name":"sql查询近七天,近两周,近一个月的数据_sql最近一周数据_心诚则灵'的博客-CSDN博客", "url":"https://blog.csdn.net/wenchangwenliu/article/details/119891790", "icon":null, "classifyName":"MySQL", "classifyId":"1522586805693681666" }, { "id":"1630480535938764801", "timestamp":1677571827000, "enabledState":null, "name":"开源流程引擎哪个好,如何选型? - 知乎", "url":"https://zhuanlan.zhihu.com/p/369761832", "icon":null, "classifyName":"Java", "classifyId":"1522586296119300097" } ] } }
Hasil respons adalah sama seperti di atas.
Bahagian 3: Kongsi cara HttpUtils dikapsulkan
Pertama,
danRequest
Response
com.fengwenyi.javalib.http.Permintaan
com.fengwenyi.javalib.http.Response
Juga,
untuk menyimpan konfigurasi parameter HTTP.com.fengwenyi.javalib.http.Request.Option
Untuk serasi dengan berbilang alat HTTP untuk melaksanakan permintaan,
.
HttpClientFactory
HttpClient
com.fengwenyi.javalib.http.client.HttpClient
com.fengwenyi.javalib.http.client.HttpClientFactory
Ok, mari kita lihat kod di bawah:
Map<String, Object> paramMap = new HashMap<>(); paramMap.put("currentPage", 1); paramMap.put("pageSize", 10); Map<String, String> headerMap = new HashMap<>(); headerMap.put("Accept", "application/json"); Request request = new Request(); request.setUrl("https://erwin-api.fengwenyi.com/erwin/bookmark/page"); request.setParam(paramMap); request.setMethod(Request.Method.GET); request.setUtil(Request.Util.OkHttp); Request.Option option = new Request.Option(); option.setHeaders(headerMap); option.setConnectTimeoutSecond(3); option.setReadTimeoutSecond(5); option.setLogLevel(Request.LogLevel.DEBUG); try { String result = HttpUtils.execute(request, option); System.out.println(result); } catch (IOException e) { throw new RuntimeException(e); }
HttpClientFactory#get
public static String execute(Request request, Request.Option option) throws IOException { check(request); HttpClient httpClient = HttpClientFactory.get(request.getUtil()); Response response = httpClient.execute(request, option); return handleResponse(response); }
Jadi, hanya perlu laksanakan antara muka
.rreeee
Atas ialah kandungan terperinci Cara menggunakan HttpUtils untuk menghantar permintaan HTTP dalam Java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!