通过URL查询字符串从文件中读取InputStream

时间:2016-02-08 13:27:48

标签: java url networking junit httpconnection

当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怎么办?我是否仍然可以从服务器响应中获取文件流?

谢谢!

2 个答案:

答案 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();
}