【发布时间】:2021-06-01 07:09:23
【问题描述】:
我熟悉使用 HttpURLConnection 类在 Java 中发出 GET 请求的基础知识。在返回类型为 JSON 的正常情况下,我会这样做:
URL obj = new URL(myURLString);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.setRequestMethod("GET");
int responseCode = con.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String inpLine;
StringBuffer resp = new StringBuffer();
while ((inpLine = in.readLine()) != null) {
resp.append(inputLine);
}
in.close();
System.out.println(resp.toString());
} else { System.out.println("Request failed");
但是,我正在尝试使用的当前端点会发回一个包含各种类型文件的 zip 文件。在这种情况下,“Content-Type”将是“application/octet-stream”。用上面的代码访问那个端点会导致控制台中写入一堆符号(不确定它叫什么)。即使在 Postman 中,我也看到了相同的情况,并且仅当我在发出请求时使用“发送和下载”选项时才有效,这会提示我保存响应并获得 zip 文件。
有关如何通过 Java 访问 API 并下载返回的 zip 文件的任何帮助?提前谢谢你。
编辑:我打算对 zip 文件执行的操作是将其保存在本地,然后我的程序的其他部分将使用其中的内容。
【问题讨论】:
-
压缩文件是二进制文件。因此,您不能使用基于字符的 reader(您使用的是
InputStreamReader)来阅读内容。按原样获取输入流(因为它们是基于 nbyte 的)。 -
你需要用那个 zip 文件做什么?您是否需要将其保存在某个地方,或者您对某个内容(对里面的内容)感兴趣?
-
我需要把它保存在某个地方。端点上有一个参数,我可以指定保存位置。
标签: java api rest httpurlconnection bufferedreader