HttpsURLConnection上傳文件流(實(shí)例講解)
項(xiàng)目需要對(duì)接外部接口,將圖片文件流發(fā)送到外部接口,下面代碼就是HttpsURLConnection如何上傳文件流:
/**
* HttpsURLConnection上傳文件流
*
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
//本地圖片
java.io.File file = new java.io.File("/Users/jikukalun/Pictures/id1.jpg");
FileInputStream fileInputStream = new FileInputStream(file);
//對(duì)接外部接口
String urlString = "************";
URL url = new URL(urlString);
HttpsURLConnection con = (HttpsURLConnection) url.openConnection();
// 設(shè)置是否向httpUrlConnection輸出,因?yàn)檫@個(gè)是post請(qǐng)求,參數(shù)要放在
// http正文內(nèi),因此需要設(shè)為true, 默認(rèn)情況下是false;
con.setDoOutput(true);
// 設(shè)置是否從httpUrlConnection讀入,默認(rèn)情況下是true;
con.setDoInput(true);
// 設(shè)定請(qǐng)求的方法為"POST",默認(rèn)是GET
con.setRequestMethod("POST");
// Post 請(qǐng)求不能使用緩存
con.setUseCaches(false);
// 設(shè)定傳送的內(nèi)容類(lèi)型是可序列化的java對(duì)象
// (如果不設(shè)此項(xiàng),在傳送序列化對(duì)象時(shí),當(dāng)WEB服務(wù)默認(rèn)的不是這種類(lèi)型時(shí)可能拋java.io.EOFException)
// con.setRequestProperty("Content-type", "application/x-java-serialized-object");
OutputStream out = con.getOutputStream();
//讀取本地圖片文件流
FileInputStream inputStream = new FileInputStream(file);
byte[] data = new byte[2048];
int len = 0;
int sum = 0;
while ((len = inputStream.read(data)) != -1) {
//將讀取到的本地文件流讀取到HttpsURLConnection,進(jìn)行上傳
out.write(data, 0, len);
sum = len + sum;
}
System.out.println("上傳圖片大小為:" + sum);
out.flush();
inputStream.close();
out.close();
int code = con.getResponseCode(); //獲取post請(qǐng)求返回狀態(tài)
System.out.println("code=" + code + " url=" + url);
if (code == 200) {
InputStream inputStream2 = con.getInputStream();
ByteArrayOutputStream bos = new ByteArrayOutputStream();
while ((len = inputStream2.read(data)) != -1) {
bos.write(data, 0, len);
}
inputStream2.close();
String content = bos.toString();
bos.close();
System.out.println("result =" + content);
//將返回的json格式的字符串轉(zhuǎn)化為json對(duì)象
JSONObject json = JSONObject.parseObject(content);
try {
System.out.println("name=" + json.getString("name") + ", people=" + json.getString("people") + ", sex=" + json.getString("sex")
+ ", id_number=" + json.getString("id_number") + ", type=" + json.getString("type") + ", address=" + json.getString("address")
+ ", birthday=" + json.getString("birthday"));
} catch (JSONException e) {
e.printStackTrace();
}
}
//斷開(kāi)HttpsURLConnection連接
con.disconnect();
}
引用jar包:
import com.alibaba.fastjson.JSONException; import com.alibaba.fastjson.JSONObject; import javax.net.ssl.HttpsURLConnection; import java.io.*; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL;
以上這篇HttpsURLConnection上傳文件流(實(shí)例講解)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringMVC接收與響應(yīng)json數(shù)據(jù)的幾種方式
這篇文章主要給大家介紹了關(guān)于SpringMVC接收與響應(yīng)json數(shù)據(jù)的幾種方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用springmvc具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03
Java聊天室之實(shí)現(xiàn)一個(gè)服務(wù)器與多個(gè)客戶端通信
這篇文章主要為大家詳細(xì)介紹了Java簡(jiǎn)易聊天室之實(shí)現(xiàn)一個(gè)服務(wù)器與多個(gè)客戶端通信,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以了解一下2022-10-10
Gradle進(jìn)階使用結(jié)合Sonarqube進(jìn)行代碼審查的方法
今天小編就為大家分享一篇關(guān)于Gradle進(jìn)階使用結(jié)合Sonarqube進(jìn)行代碼審查的方法,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-12-12
SpringBoot使用Maven實(shí)現(xiàn)多環(huán)境配置管理
軟件開(kāi)發(fā)中經(jīng)常有開(kāi)發(fā)環(huán)境、測(cè)試環(huán)境、生產(chǎn)環(huán)境,而且一般這些環(huán)境配置會(huì)各不相同,本文主要介紹了SpringBoot使用Maven實(shí)現(xiàn)多環(huán)境配置管理,感興趣的可以了解一下2024-01-01
SpringBoot Event 事件如何實(shí)現(xiàn)異步延遲執(zhí)行
這篇文章主要介紹了Spring Boot Event 事件如何實(shí)現(xiàn)異步延遲執(zhí)行問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02
java 通過(guò)發(fā)送json,post請(qǐng)求,返回json數(shù)據(jù)的方法
下面小編就為大家分享一篇java 通過(guò)發(fā)送json,post請(qǐng)求,返回json數(shù)據(jù)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-03-03
Java模仿微信實(shí)現(xiàn)零錢(qián)通簡(jiǎn)易功能(兩種版本)
本文主要介紹了使用Java開(kāi)發(fā)零錢(qián)通項(xiàng)目, 模仿微信實(shí)現(xiàn)簡(jiǎn)易功能,可以完成收益入賬,消費(fèi),查看明細(xì),退出系統(tǒng)等功能。文中一共介紹了兩種實(shí)現(xiàn)方法,快來(lái)學(xué)習(xí)吧2021-12-12

