日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

Android-上传图片(-)_HttpURLConnection

發(fā)布時(shí)間:2025/3/21 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android-上传图片(-)_HttpURLConnection 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

繼選擇圖片相冊(cè)并通過ImageView展示在Activity中,獲取到圖片真實(shí)路徑后(詳見Android獲取相冊(cè)中圖片的路徑 4.4版本前后的變化),
將通過以下兩種方式(當(dāng)然了不止這兩種)將獲取到的圖片上傳到服務(wù)端,僅涉及客戶端代碼部分。

  • 使用HttpURLConnection的方式模擬拼裝HTTP請(qǐng)求
  • 使用HttpClient(6.0已經(jīng)廢棄了HttpClient,但是還有有必要記錄下)
  • 本篇博客將主要記錄第一種方式,下篇將記錄第二種方式。

    主要是模擬HTTP請(qǐng)求,以及流的處理。
    核心代碼如下,詳情請(qǐng)移步本人GITHUB

    try {// 實(shí)例化URLURL httpURL = new URL(url);// 打開連接HttpURLConnection connection = (HttpURLConnection) httpURL.openConnection();/**設(shè)置connection屬性 ,拼裝HTTP請(qǐng)求協(xié)議**///允許輸入流 輸出流 不使用緩存connection.setDoInput(true);connection.setDoOutput(true);connection.setUseCaches(false);// 以POST的方式提交connection.setRequestMethod("POST");// 設(shè)置超時(shí)時(shí)間connection.setReadTimeout(5 * 1000);connection.setConnectTimeout(5 * 1000);// 設(shè)置RequestPropertyconnection.setRequestProperty("Connection", "Keep-Alive");connection.setRequestProperty("Charset", "UTF-8");connection.setRequestProperty("Content-Type", CONTENT_TYPE + "; boundary=" + BOUNDARY);// 構(gòu)造DataOutputStreamDataOutputStream ds = new DataOutputStream(connection.getOutputStream());/** 模擬拼裝請(qǐng)求正文頭 在瀏覽器開發(fā)者工具中F12網(wǎng)絡(luò)中可以查看-----------------------------7df2cd15150370 (這個(gè)BOUNDARY比請(qǐng)求頭的多--,所以定義了個(gè)prefix)Content-Disposition: form-data; name="file"; filename="C:\Users\Mr.Yang\Desktop\girl.jpg"Content-Type: image/jpeg-----------------------------7df2cd15150370--**/// 模擬 -----------------------------7df2cd15150370ds.writeBytes(PREFIX + BOUNDARY + LINE_END);ds.writeBytes("Content-Disposition: form-data; "+ "name=\"file\";filename=\"" + file.getName() + "\"" + LINE_END);ds.writeBytes(LINE_END);// 構(gòu)建要上傳的文件的FileInputStreamFileInputStream fis = new FileInputStream(file);// 設(shè)置每次寫入1024 * 4 bytesbyte[] buffer = new byte[1024 * 4];int len = -1;// 從文件讀取數(shù)據(jù)至緩沖區(qū)while ((len = fis.read(buffer)) != -1) {// 將資料寫入DataOutputStream中ds.write(buffer, 0, len);}// 模擬換行符ds.writeBytes(LINE_END);// 模擬結(jié)尾的信息ds.writeBytes(PREFIX + BOUNDARY + PREFIX + LINE_END);// Flushes this stream to ensure all pending data is sent out to the targetds.flush();/** 接收服務(wù)端的返回信息**/BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));StringBuffer sb = new StringBuffer();String line;while ((line = reader.readLine()) != null) {sb.append(line);}LogUtils.d("服務(wù)端返回:" + sb.toString());// 關(guān)閉流if (fis != null) {fis.close();}if (reader != null) {reader.close();}if (ds != null) {ds.close();}// 發(fā)送消息,在主線程更新提示信息Message message = new Message();message.what = 1;message.obj = sb.toString();handler.sendMessage(message);} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}

    總結(jié)

    以上是生活随笔為你收集整理的Android-上传图片(-)_HttpURLConnection的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。