其他分享
首页 > 其他分享> > 调用第三方接口返回文件流并存储文件到本地

调用第三方接口返回文件流并存储文件到本地

作者:互联网

调用第三方接口都很常见 但一般都是json格式的反参
一些功能需要我们获取文件流,存储到本地

 URL url = new URL(URL);
            urlConnection = (HttpURLConnection) url.openConnection();
            urlConnection.setRequestMethod("POST");
            urlConnection.setConnectTimeout(1000);
            urlConnection.setDoOutput(true);
            urlConnection.setDoInput(true);
            urlConnection.setUseCaches(false);
            urlConnection.setRequestProperty("Content-Type", "application/json;");
            urlConnection.setRequestProperty("header", "1231123");

我这里使用的是 url 其他的不用说 使用 post 请求 超时时间
设置header
然后需要传入body的 需要这样写

 JSONObject param = new JSONObject();
            param.put("body", "zhi");
            urlConnection.connect();
            OutputStreamWriter writer = new OutputStreamWriter(urlConnection.getOutputStream(),"UTF-8");
            writer.write(param.toString());
            writer.flush();

需要先设置一个param 里边放body的入参字段 我这只写了一个
然后将入参写入到里边

请求设置结束了
然后设置文件缓存地址


            File file = new File("xxxx/xxx.xxx");
            if (!file.getParentFile().exists()) {
                file.getParentFile().mkdirs();
            }
            if (!file.exists()) {
                file.createNewFile();
            }

这里校验了文件夹和文件
没有则新建
然后就是拿数据

 inputStream = urlConnection.getInputStream();
            // 1K的数据缓冲
            byte[] bs = new byte[1024];
            // 读取到的数据长度
            int len;
            // 输出的文件流
            OutputStream os = new FileOutputStream("xxx/xxx.xx");
            // 开始读取
            while ((len = inputStream.read(bs)) != -1) {
                os.write(bs, 0, len);
            }
            // 完毕,关闭所有链接
            os.close();
            inputStream.close();

将返回的文件流 输出到刚刚新建的空白文件中
这样调用第三方接口 返回文件流的存储就弄好了 最后别忘了关闭链接

 urlConnection.disconnect();

如果遇到文件需要强制转格式的 但前提是通用的格式 不能把jpg转成word格式 对吧 jpg 强转 png还行

 BufferedImage bufferegImage= ImageIO.read(new File("需要转换的文件"));
                    String filetemp = "转换后的文件";
                    File file1 = new File(filetemp);
                    ImageIO.write(bufferegImage,"jpg",file1);

这样一转换就可以了
当然了 pom还需要加一个包

        <dependency>
            <groupId>com.github.jai-imageio</groupId>
            <artifactId>jai-imageio-core</artifactId>
            <version>1.4.0</version>
        </dependency>

好了 每天进步一点点

标签:文件,urlConnection,调用,File,接口,param,file,new
来源: https://blog.csdn.net/qq_43021813/article/details/116660442