java后臺(tái)調(diào)用HttpURLConnection類(lèi)模擬瀏覽器請(qǐng)求實(shí)例(可用于接口調(diào)用)
一般在項(xiàng)目開(kāi)發(fā)中難免遇到外部接口的調(diào)用,本文實(shí)例講述了java后臺(tái)調(diào)用HttpURLConnection類(lèi)模擬瀏覽器請(qǐng)求的方法。可用于接口調(diào)用。分享給大家供大家參考。具體實(shí)現(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請(qǐng)求地址
HttpURLConnection connection = (HttpURLConnection) url.openConnection();// 打開(kāi)連接
connection.connect();// 連接會(huì)話(huà)
// 獲取輸入流
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();// 斷開(kāi)連接
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)識(shí)一個(gè)url所引用的遠(yuǎn)程對(duì)象連接)
HttpURLConnection connection = (HttpURLConnection) url.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ù))
// application/x-javascript text/xml->xml數(shù)據(jù) application/x-javascript->json對(duì)象 application/x-www-form-urlencoded->表單數(shù)據(jù)
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
// 建立連接 (請(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 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ā)起請(qǐng)求,處理服務(wù)器響應(yīng) (從連接獲取到輸入流并包裝為bufferedReader)
BufferedReader bf = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line;
StringBuilder sb = new StringBuilder(); // 用來(lái)存儲(chǔ)響應(yīng)數(shù)據(jù)
// 循環(huán)讀取流,若不到結(jié)尾處
while ((line = bf.readLine()) != null) {
sb.append(bf.readLine());
}
bf.close(); // 重要且易忽略步驟 (關(guān)閉流,切記!)
connection.disconnect(); // 銷(xiāo)毀連接
System.out.println(sb.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
// httpURLConectionGET();
httpURLConnectionPOST();
}
}
希望本文所述對(duì)大家的Java程序設(shè)計(jì)有所幫助。
- Java接口和抽象類(lèi)用法實(shí)例總結(jié)
- Java中實(shí)現(xiàn)Comparator接口和用法實(shí)例(簡(jiǎn)明易懂)
- JAVA發(fā)送http get/post請(qǐng)求,調(diào)用http接口、方法詳解
- 詳解java集成支付寶支付接口(JSP+支付寶20160912)
- java中接口(interface)及使用方法示例
- Java 調(diào)用Restful API接口的幾種方式(HTTPS)
- java線(xiàn)程之使用Runnable接口創(chuàng)建線(xiàn)程的方法
- Java調(diào)用WebService接口的方法
- Java利用Swagger2自動(dòng)生成對(duì)外接口的文檔
- Java調(diào)用CXF WebService接口的兩種方式實(shí)例
- 詳解Java 中的 AutoCloseable 接口
相關(guān)文章
Java版數(shù)據(jù)結(jié)構(gòu)插入數(shù)據(jù)時(shí)遇到的結(jié)點(diǎn)為空的問(wèn)題詳解
這篇文章主要介紹了Java版數(shù)據(jù)結(jié)構(gòu)插入數(shù)據(jù)時(shí)遇到的結(jié)點(diǎn)為空的問(wèn)題及解決辦法,需要的朋友們可以學(xué)習(xí)下。2019-09-09
java 調(diào)用wsdl協(xié)議接口簡(jiǎn)單實(shí)用方法最新推薦
文章介紹了如何使用POM導(dǎo)入依賴(lài),并編寫(xiě)一個(gè)測(cè)試類(lèi)來(lái)調(diào)用不同的Web服務(wù)接口,通過(guò)訪(fǎng)問(wèn)接口地址,我們可以獲取請(qǐng)求和返回的body,并進(jìn)一步解析返回的JSON結(jié)果,感興趣的朋友一起看看吧2025-03-03
Spring Boot 配置MySQL數(shù)據(jù)庫(kù)重連的操作方法
這篇文章主要介紹了Spring Boot 配置MySQL數(shù)據(jù)庫(kù)重連的操作方法,需要的朋友可以參考下2018-04-04
Java基礎(chǔ)學(xué)習(xí)之運(yùn)算符相關(guān)知識(shí)總結(jié)
今天帶大家復(fù)習(xí)Java基礎(chǔ)知識(shí),文中對(duì)Java運(yùn)算符相關(guān)知識(shí)作了詳細(xì)總結(jié),對(duì)正在學(xué)習(xí)java基礎(chǔ)的小伙伴們很有幫助,需要的朋友可以參考下2021-05-05
Spring Boot訪(fǎng)問(wèn)靜態(tài)資源css/js,你真的懂了嗎
在搭建springboot時(shí)經(jīng)常需要在html中訪(fǎng)問(wèn)一些靜態(tài)資源,很多朋友不清楚如何在 Spring Boot中訪(fǎng)問(wèn)靜態(tài)資源,本文給大家?guī)?lái)兩種解決方案,感興趣的朋友跟隨小編一起看看吧2021-05-05
在SpringBoot中利用RocketMQ實(shí)現(xiàn)批量消息消費(fèi)功能
RocketMQ 是一款分布式消息隊(duì)列,支持高吞吐、低延遲的消息傳遞,對(duì)于需要一次處理多條消息的場(chǎng)景,RocketMQ 提供了批量消費(fèi)的機(jī)制,這篇文章將展示如何在 Spring Boot 中實(shí)現(xiàn)這一功能,感興趣的小伙伴跟著小編一起來(lái)看看吧2024-11-11
淺析JAVA常用JDBC連接數(shù)據(jù)庫(kù)的方法總結(jié)
本篇文章是對(duì)在JAVA中常用JDBC連接數(shù)據(jù)庫(kù)的方法進(jìn)行了詳細(xì)的總結(jié)分析,需要的朋友參考下2013-07-07
SpringBoot項(xiàng)目中使用Swagger2及注解解釋的詳細(xì)教程
Swagger2是一個(gè)開(kāi)源項(xiàng)目,用于為RESTful Web服務(wù)生成REST API文檔,下面這篇文章主要給大家介紹了關(guān)于SpringBoot項(xiàng)目中使用Swagger2及注解解釋的詳細(xì)教程,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-04-04

