欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java接收文件流+response.body()調(diào)用兩次問題(分別接收文件和對象)

 更新時間:2023年06月17日 14:48:48   作者:dalter  
這篇文章主要介紹了java接收文件流+response.body()調(diào)用兩次問題(分別接收文件和對象),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

java接收文件流+response.body()調(diào)用兩次

正常返回的數(shù)據(jù)是流 可以讀成圖片 但是異常的時候返回的是對象(字段) 這種時候需要判斷情況,就是說分別獲取流文件的對象信息,而Response.body()這個只能用一次

所以推出這個解決方法

import okhttp3.*;
import okio.Buffer;
import okio.BufferedSource;
import java.io.*;
import java.nio.charset.Charset;
import java.util.HashMap;
import java.util.Map;    
public static void main(String[] args) throws Exception {
        OkHttpClient client = new OkHttpClient().newBuilder()
                .build();
        Request request = new Request.Builder()
                .url("http://127.0.0.1:8080/test/duizhang")
                .build();
        Response response = client.newCall(request).execute();
        ResponseBody body = response.body();
        BufferedSource source = body.source();
        source.request(Long.MAX_VALUE);
        Buffer buffer = source.buffer();
        String responseBodyString = buffer.clone().readString(Charset.forName("UTF-8"));
        System.out.println(responseBodyString);
        InputStream is = body.byteStream();
        byte[] bs = new byte[1024];
        // 讀取到的數(shù)據(jù)長度
        int len;
        // 輸出的文件流(后綴名)
        File sf=new File("F://文件接收");
        if(!sf.exists()){
            sf.mkdirs();
        }
        // 新的圖片文件名 = 編號 +"."圖片擴(kuò)展名
        OutputStream os = new FileOutputStream(sf.getPath()+"\\"+sf.getName());
        // 開始讀取
        while ((len = is.read(bs)) != -1) {
            os.write(bs, 0, len);
        }
        // 完畢,關(guān)閉所有鏈接
        os.close();
        is.close();
        System.out.println("程序執(zhí)行完畢");
    }

關(guān)于OKHttpUtils,連續(xù)調(diào)用Response.body()報錯io.closed的坑

當(dāng)我調(diào)用

inputStream = response.body().byteStream();時報錯io異常的closed錯誤

經(jīng)過問題排查,發(fā)現(xiàn)我在工具類里面寫了

log.info("請求返回內(nèi)容為{}",response.body().string());

這里雖然調(diào)用的是string()方法,但是由于body()調(diào)用一次就會導(dǎo)致后面獲取輸入流時流關(guān)閉,即okhttp3只允許調(diào)用response.body()一次,因為響應(yīng)體可能很大,所以O(shè)kHttp沒有存入響應(yīng)體到內(nèi)存,只是作為流從網(wǎng)絡(luò)中讀取。

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

您可能感興趣的文章:

相關(guān)文章

  • Spring實戰(zhàn)之Bean的作用域request用法分析

    Spring實戰(zhàn)之Bean的作用域request用法分析

    這篇文章主要介紹了Spring實戰(zhàn)之Bean的作用域request用法,結(jié)合實例形式分析了spring中Bean的request作用域相關(guān)使用技巧與操作注意事項,需要的朋友可以參考下
    2019-11-11
  • mybatis對象List<String> List<Integer>屬性映射方式

    mybatis對象List<String> List<Integer>屬性映射方式

    這篇文章主要介紹了mybatis對象List<String> List<Integer>屬性映射方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Java并發(fā)編程之ReentrantLock可重入鎖的實例代碼

    Java并發(fā)編程之ReentrantLock可重入鎖的實例代碼

    這篇文章主要介紹了Java并發(fā)編程之ReentrantLock可重入鎖的實例代碼,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02
  • zookeeper watch機(jī)制的理解

    zookeeper watch機(jī)制的理解

    這篇文章主要介紹了zookeeper watch機(jī)制的相關(guān)內(nèi)容,內(nèi)容比較詳細(xì),需要的朋友可以參考下。
    2017-09-09
  • Spring Boot 快速集成 Redis的方法

    Spring Boot 快速集成 Redis的方法

    這篇文章主要介紹了Spring Boot 如何快速集成 Redis,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • Java模擬實現(xiàn)HashMap算法流程詳解

    Java模擬實現(xiàn)HashMap算法流程詳解

    在java開發(fā)中,HashMap是最常用、最常見的集合容器類之一,文中通過示例代碼介紹HashMap為啥要二次Hash,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2023-02-02
  • Spring AI內(nèi)置DeepSeek的詳細(xì)步驟

    Spring AI內(nèi)置DeepSeek的詳細(xì)步驟

    Spring AI 最新快照版已經(jīng)內(nèi)置 DeepSeek 了,所以以后項目中對接 DeepSeek 就方便多了,但因為快照版會有很多 Bug,所以今天咱們就來看穩(wěn)定版的 Spring AI 如何對接 DeepSeek 滿血版,感興趣的小伙伴跟著小編一起來看看吧
    2025-02-02
  • springmvc中下載中文文件名稱為下劃線的解決方案

    springmvc中下載中文文件名稱為下劃線的解決方案

    這篇文章主要介紹了springmvc中下載中文文件名稱為下劃線的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • JPA中EntityListeners注解的使用詳解

    JPA中EntityListeners注解的使用詳解

    這篇文章主要介紹了JPA中EntityListeners注解的使用詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • Java?NIO實戰(zhàn)之多人聊天室

    Java?NIO實戰(zhàn)之多人聊天室

    這篇文章主要為大家詳細(xì)介紹了Java?NIO實戰(zhàn)之多人聊天室,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11

最新評論