java后臺調(diào)用HttpURLConnection類模擬瀏覽器請求實例(可用于接口調(diào)用)
一般在項目開發(fā)中難免遇到外部接口的調(diào)用,本文實例講述了java后臺調(diào)用HttpURLConnection類模擬瀏覽器請求的方法。可用于接口調(diào)用。分享給大家供大家參考。具體實現(xiàn)方法如下:
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
public class HttpURLConnectionTest {
public static final String GET_URL = "http://112.4.27.9/mall-back/if_user/store_list?storeId=32";
public static final String POST_URL = "http://112.4.27.9/mall-back/if_user/store_list";
/**
* 接口調(diào)用 GET
*/
public static void httpURLConectionGET() {
try {
URL url = new URL(GET_URL); // 把字符串轉(zhuǎn)換為URL請求地址
HttpURLConnection connection = (HttpURLConnection) url.openConnection();// 打開連接
connection.connect();// 連接會話
// 獲取輸入流
BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line;
StringBuilder sb = new StringBuilder();
while ((line = br.readLine()) != null) {// 循環(huán)讀取流
sb.append(line);
}
br.close();// 關(guān)閉流
connection.disconnect();// 斷開連接
System.out.println(sb.toString());
} catch (Exception e) {
e.printStackTrace();
System.out.println("失敗!");
}
}
/**
* 接口調(diào)用 POST
*/
public static void httpURLConnectionPOST () {
try {
URL url = new URL(POST_URL);
// 將url 以 open方法返回的urlConnection 連接強(qiáng)轉(zhuǎn)為HttpURLConnection連接 (標(biāo)識一個url所引用的遠(yuǎn)程對象連接)
HttpURLConnection connection = (HttpURLConnection) url.openConnection();// 此時cnnection只是為一個連接對象,待連接中
// 設(shè)置連接輸出流為true,默認(rèn)false (post 請求是以流的方式隱式的傳遞參數(shù))
connection.setDoOutput(true);
// 設(shè)置連接輸入流為true
connection.setDoInput(true);
// 設(shè)置請求方式為post
connection.setRequestMethod("POST");
// post請求緩存設(shè)為false
connection.setUseCaches(false);
// 設(shè)置該HttpURLConnection實例是否自動執(zhí)行重定向
connection.setInstanceFollowRedirects(true);
// 設(shè)置請求頭里面的各個屬性 (以下為設(shè)置內(nèi)容的類型,設(shè)置為經(jīng)過urlEncoded編碼過的from參數(shù))
// application/x-javascript text/xml->xml數(shù)據(jù) application/x-javascript->json對象 application/x-www-form-urlencoded->表單數(shù)據(jù)
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
// 建立連接 (請求未開始,直到connection.getInputStream()方法調(diào)用時才發(fā)起,以上各個參數(shù)設(shè)置需在此方法之前進(jìn)行)
connection.connect();
// 創(chuàng)建輸入輸出流,用于往連接里面輸出攜帶的參數(shù),(輸出內(nèi)容為?后面的內(nèi)容)
DataOutputStream dataout = new DataOutputStream(connection.getOutputStream());
String parm = "storeId=" + URLEncoder.encode("32", "utf-8"); //URLEncoder.encode()方法 為字符串進(jìn)行編碼
// 將參數(shù)輸出到連接
dataout.writeBytes(parm);
// 輸出完成后刷新并關(guān)閉流
dataout.flush();
dataout.close(); // 重要且易忽略步驟 (關(guān)閉流,切記!)
System.out.println(connection.getResponseCode());
// 連接發(fā)起請求,處理服務(wù)器響應(yīng) (從連接獲取到輸入流并包裝為bufferedReader)
BufferedReader bf = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line;
StringBuilder sb = new StringBuilder(); // 用來存儲響應(yīng)數(shù)據(jù)
// 循環(huán)讀取流,若不到結(jié)尾處
while ((line = bf.readLine()) != null) {
sb.append(bf.readLine());
}
bf.close(); // 重要且易忽略步驟 (關(guān)閉流,切記!)
connection.disconnect(); // 銷毀連接
System.out.println(sb.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
// httpURLConectionGET();
httpURLConnectionPOST();
}
}
希望本文所述對大家的Java程序設(shè)計有所幫助。
- Java接口和抽象類用法實例總結(jié)
- Java中實現(xiàn)Comparator接口和用法實例(簡明易懂)
- JAVA發(fā)送http get/post請求,調(diào)用http接口、方法詳解
- 詳解java集成支付寶支付接口(JSP+支付寶20160912)
- java中接口(interface)及使用方法示例
- Java 調(diào)用Restful API接口的幾種方式(HTTPS)
- java線程之使用Runnable接口創(chuàng)建線程的方法
- Java調(diào)用WebService接口的方法
- Java利用Swagger2自動生成對外接口的文檔
- Java調(diào)用CXF WebService接口的兩種方式實例
- 詳解Java 中的 AutoCloseable 接口
相關(guān)文章
解析Java實現(xiàn)設(shè)計模式六大原則之里氏替換原則
里氏替換原則是用來幫助我們在繼承關(guān)系中進(jìn)行父子類的設(shè)計。它闡述了有關(guān)繼承的一些原則,也就是什么時候應(yīng)該使用繼承,什么時候不應(yīng)該使用繼承,以及其中蘊(yùn)含的原理。它是繼承復(fù)用的基礎(chǔ),反映了基類與子類之間的關(guān)系,是對開閉原則的補(bǔ)充,對實現(xiàn)抽象化具體步驟的規(guī)范2021-06-06使用Mybatis Plus整合多數(shù)據(jù)源和讀寫分離的詳細(xì)過程
這篇文章主要介紹了Mybatis Plus整合多數(shù)據(jù)源和讀寫分離的詳細(xì)過程,mybatisplus可以整合阿里的分布式事務(wù)組件seata,本文通過示例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧2021-09-09SpringAOP 設(shè)置注入的實現(xiàn)步驟
這篇文章主要介紹了SpringAOP 設(shè)置注入的實現(xiàn)步驟,幫助大家更好的理解和學(xué)習(xí)使用Spring框架,感興趣的朋友可以了解下2021-05-05Idea 2020.2 創(chuàng)建web、Spring項目的教程圖解
這篇文章主要介紹了Idea 2020.2 創(chuàng)建web、Spring項目的教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-08-08Spring MVC學(xué)習(xí)教程之RequestMappingHandlerAdapter詳解
這篇文章主要給大家介紹了關(guān)于Spring MVC學(xué)習(xí)教程之RequestMappingHandlerAdapter的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-11-11SpringBoot實現(xiàn)接口校驗簽名調(diào)用的項目實踐
在以SpringBoot開發(fā)后臺API接口時,會存在哪些接口不安全的因素呢?通常如何去解決的呢?本文主要介紹了SpringBoot實現(xiàn)接口校驗簽名調(diào)用的項目實踐,感興趣的可以了解一下2023-09-09