Java發(fā)送http請(qǐng)求調(diào)用第三方接口獲取token方式
Java發(fā)送http請(qǐng)求調(diào)用第三方接口獲取token
最近在做項(xiàng)目對(duì)接,因?yàn)橐l繁調(diào)用第三方的接口,所以就整理了一下代碼
話(huà)不多說(shuō)直接上代碼
public static String httpURLConnectionPOST (String url, String data) { StringBuffer strBf = new StringBuffer(); try { URL realUrl = new URL(url); //將realUrl以 open方法返回的urlConnection 連接強(qiáng)轉(zhuǎn)為HttpURLConnection連接 (標(biāo)識(shí)一個(gè)url所引用的遠(yuǎn)程對(duì)象連接) HttpURLConnection connection = (HttpURLConnection) realUrl.openConnection();// 此時(shí)cnnection只是為一個(gè)連接對(duì)象,待連接中 //設(shè)置連接輸出流為true,默認(rèn)false (post請(qǐng)求是以流的方式隱式的傳遞參數(shù)) connection.setDoOutput(true); //設(shè)置連接輸入流為true connection.setDoInput(true); //設(shè)置請(qǐng)求方式為post connection.setRequestMethod("POST"); //post請(qǐng)求緩存設(shè)為false connection.setUseCaches(false); //設(shè)置該HttpURLConnection實(shí)例是否自動(dòng)執(zhí)行重定向 connection.setInstanceFollowRedirects(true); //設(shè)置請(qǐng)求頭里面的各個(gè)屬性 (以下為設(shè)置內(nèi)容的類(lèi)型,設(shè)置為經(jīng)過(guò)urlEncoded編碼過(guò)的from參數(shù)) connection.setRequestProperty("Content-Type", "application/json;charset=utf-8"); //建立連接 (請(qǐng)求未開(kāi)始,直到connection.getInputStream()方法調(diào)用時(shí)才發(fā)起,以上各個(gè)參數(shù)設(shè)置需在此方法之前進(jìn)行) connection.connect(); //創(chuàng)建輸入輸出流,用于往連接里面輸出攜帶的參數(shù),(輸出內(nèi)容為?后面的內(nèi)容) DataOutputStream dataout = new DataOutputStream(connection.getOutputStream()); String query = data.toString(); //將參數(shù)輸出到連接 dataout.write(query.getBytes("UTF-8")); // 輸出完成后刷新并關(guān)閉流 dataout.flush(); dataout.close(); // 重要且易忽略步驟 (關(guān)閉流,切記!) BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8")); String lines; while ((lines = reader.readLine()) != null) { lines = new String(lines.getBytes(), "utf-8"); strBf.append(lines); } reader.close(); connection.disconnect(); System.out.println("返回?cái)?shù)據(jù):"+strBf.toString()); } catch (Exception e) { e.printStackTrace(); } return strBf.toString(); }
測(cè)試
自己寫(xiě)一個(gè)main方法進(jìn)行測(cè)試
public static void main(String[] args) { String strJson = httpURLConnectionPOST("URL","data"); JSONObject jsonObject = JSONObject.parseObject(strJson); System.out.println("json"+jsonObject); }
返回?cái)?shù)據(jù)為json類(lèi)型
如何減少使用第三方接口調(diào)用是token的獲得
我們開(kāi)發(fā)經(jīng)常會(huì)遇到要使用第三方的接口,且這些接口都需要在請(qǐng)求頭上帶上Authorization - Bearer token這樣的驗(yàn)證信息;
假如我們每次都獲取token那會(huì)導(dǎo)致每次都會(huì)生成新的token,增加了調(diào)用次數(shù);
減少調(diào)用次數(shù)的辦法
在登錄的時(shí)候獲取token(這個(gè)時(shí)候類(lèi)中就賦值token),再把token存儲(chǔ)進(jìn)redis(判斷過(guò)期)
步驟:
1.定義獲取第三方token的類(lèi),定義一個(gè)屬性為sxtoken;
2.在獲取第三方token的類(lèi)中定義獲得token的方法,然后賦值給屬性sxtoken;
3.在登錄方法中,吧第三方接口的token存儲(chǔ)進(jìn)Redis中;
4.在獲取第三方token的類(lèi)中定義判斷屬性sxtoken為空的時(shí)候,從緩存獲得的方法;
5.調(diào)用第三方接口的時(shí)候都先試用第4步,防止sxtoken為null
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- Java如何基于okhttp請(qǐng)求SSE接口流式返回詳解
- Java請(qǐng)求Http接口OkHttp超詳細(xì)講解(附帶工具類(lèi))
- java+Okhttp3調(diào)用接口的實(shí)例
- Java中的HttpServletRequest接口詳細(xì)解讀
- Java調(diào)用HTTPS接口實(shí)現(xiàn)繞過(guò)SSL認(rèn)證
- Java調(diào)用第三方http接口的四種方式總結(jié)
- Java調(diào)用第三方http接口的常用方式總結(jié)
- Java實(shí)現(xiàn)調(diào)用對(duì)方http接口得到返回?cái)?shù)據(jù)
- Java 調(diào)用 HTTP 接口的 7 種方式示例代碼(全網(wǎng)最全指南)
相關(guān)文章
SpringBoot整合Canal與RabbitMQ監(jiān)聽(tīng)數(shù)據(jù)變更記錄
這篇文章主要介紹了SpringBoot整合Canal與RabbitMQ監(jiān)聽(tīng)數(shù)據(jù)變更記錄,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-09-09Java操作Elasticsearch?rest-high-level-client?的基本使用
這篇文章主要介紹了Java操作Elasticsearch?rest-high-level-client?的基本使用,本篇主要講解一下?rest-high-level-client?去操作?Elasticsearch的方法,結(jié)合實(shí)例代碼給大家詳細(xì)講解,需要的朋友可以參考下2022-10-10java抓取網(wǎng)頁(yè)數(shù)據(jù)示例
要通java獲取整個(gè)網(wǎng)頁(yè)的html內(nèi)容,或者某個(gè)網(wǎng)絡(luò)文件的內(nèi)容,可以使用java提供的HttpURLConnection類(lèi)來(lái)實(shí)現(xiàn)對(duì)網(wǎng)頁(yè)內(nèi)容的抓取2014-03-03springboot?web項(xiàng)目中?Set-Cookie?失敗原因及解決辦法
這篇文章主要介紹了springboot?web項(xiàng)目中?Set-Cookie?失敗原因及解決辦法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-10-10