调用第三方接口返回文件流并存储文件到本地
作者:互联网
调用第三方接口都很常见 但一般都是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