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-03Java聊天室之實(shí)現(xiàn)一個(gè)服務(wù)器與多個(gè)客戶(hù)端通信
這篇文章主要為大家詳細(xì)介紹了Java簡(jiǎn)易聊天室之實(shí)現(xiàn)一個(gè)服務(wù)器與多個(gè)客戶(hù)端通信,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的可以了解一下2022-10-10Gradle進(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-12SpringBoot使用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-01SpringBoot Event 事件如何實(shí)現(xiàn)異步延遲執(zhí)行
這篇文章主要介紹了Spring Boot Event 事件如何實(shí)現(xiàn)異步延遲執(zhí)行問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02java 通過(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-03Java模仿微信實(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