当URL是查询字符串而不是文件的直接链接时,是否可以使用java URL.openStream()方法将文件读入输入流?例如。我的代码是:
URL myURL = new URL("http://www.test.com/myFile.doc");
InputStream is = myURL.openStream();
这适用于直接文件链接。但是如果网址是http://www.test.com?file=myFile.doc怎么办?我是否仍然可以从服务器响应中获取文件流?
谢谢!
答案 0 :(得分:0)
网址类适用于任何网址,包括:
new URL("http://www.example.com/");
new URL("file://C/windows/system32/cmd.exe");
new URL("ftp://user:password@example.com/filename;type=i");
应用程序可以对数据执行某些操作,例如下载数据或将其视为纯文本。
答案 1 :(得分:0)
一般情况下,它会起作用。
但请注意,URL.openStream()
方法不遵循重定向,并且在指定一些其他HTTP行为时不那么敏捷:请求类型,标题等。
我建议改为使用Apache HTTP Client:
final CloseableHttpClient httpclient = HttpClients.createDefault();
final HttpGet request = new HttpGet("http://any-url");
try (CloseableHttpResponse response = httpclient.execute(request)) {
final int status = response.getStatusLine().getStatusCode();
if (status == 200) {
final InputStream is = response.getEntity().getContent();
} else {
throw new IOException("Got " + status + " from server!");
}
}
finally {
request.reset();
}