Java 通过URL查询字符串从文件读取InputStream
当URL是查询字符串而不是文件的直接链接时,是否可以使用java URL.openStream()方法将文件读入输入流?例如,我的代码是:Java 通过URL查询字符串从文件读取InputStream,java,url,networking,junit,httpconnection,Java,Url,Networking,Junit,Httpconnection,当URL是查询字符串而不是文件的直接链接时,是否可以使用java URL.openStream()方法将文件读入输入流?例如,我的代码是: URL myURL = new URL("http://www.test.com/myFile.doc"); InputStream is = myURL.openStream(); 这适用于直接文件链接。但是如果URL被删除了呢?我仍然能够从服务器响应获取文件流吗 谢谢 URL类适用于任何URL,包括: 新URL(“http://www.exampl
URL myURL = new URL("http://www.test.com/myFile.doc");
InputStream is = myURL.openStream();
这适用于直接文件链接。但是如果URL被删除了呢?我仍然能够从服务器响应获取文件流吗
谢谢 URL类适用于任何URL,包括:
新URL(“http://www.example.com/");代码>
新URL(“file://C/windows/system32/cmd.exe");代码>
新URL(“ftp://user:password@example.com/filename;type=i”)代码>
由应用程序来处理数据,例如下载数据或将其视为纯文本 通常是的,它会起作用 但是请注意,
URL.openStream()
方法不遵循重定向,并且在指定一些额外的HTTP行为时不够灵活:请求类型、头等
我建议改为使用:
你为什么不试试呢?因为我现在不能试试,我想知道它是如何工作的。我知道,当存在直接链接时,我已经知道文件的位置,但当它是查询字符串时,则由服务器返回as内容的位置。我很好奇这是怎么回事。非常感谢你的回复!使用这个特定的资源,我将从查询返回一个302,其中包含位置。url.openStream()会自动解析到该位置吗?或者我必须像你那样做吗?不幸的是,正如我提到的那样,使用
url.openStream()
你需要处理3xx状态,并以某种循环方式手动执行这些重定向HttpClients.createDefault()
默认情况下遵循重定向并执行许多有用的操作,查看官方文档它们非常友好。
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();
}