Java 多次读取同一URL,第二次未获取数据

Java 多次读取同一URL,第二次未获取数据,java,http,url,inputstream,httpurlconnection,Java,Http,Url,Inputstream,Httpurlconnection,我有以下代码。一个连接,然后从该连接获取一个输入流并从输入流读取。现在我想再次使用相同的连接获取输入流,但第二次我没有获取任何数据 为什么会这样?我使用的不是相同的流,而是相同的连接。我们需要再次打开连接吗?请解释 URL url=new URL("https://www.google.co.in/"); HttpURLConnection httpURLConnection=(HttpURLConnection) url.openConnection(); httpURLConnection.

我有以下代码。一个连接,然后从该连接获取一个输入流并从输入流读取。现在我想再次使用相同的连接获取输入流,但第二次我没有获取任何数据

为什么会这样?我使用的不是相同的流,而是相同的连接。我们需要再次打开连接吗?请解释

URL url=new URL("https://www.google.co.in/");
HttpURLConnection httpURLConnection=(HttpURLConnection)
url.openConnection();
httpURLConnection.setRequestMethod("GET");
httpURLConnection.connect();

InputStream inputStream=httpURLConnection.getInputStream();
BufferedReader in = new BufferedReader(new InputStreamReader(inputStream));
String inputLine;
while ((inputLine = in.readLine()) != null) 
System.out.println(inputLine);

System.out.println("**********************************");


/*Reading 2nd time*/
InputStream is=httpURLConnection.getInputStream();
BufferedReader bf = new BufferedReader(new InputStreamReader(is));
String inputLines=null;
while ((inputLine = bf.readLine()) != null) 
System.out.println(inputLines);
bf.close();

您无法获取数据,因为流中没有任何内容。要获取它,您必须发送另一个“获取”请求

每个HttpURLConnection实例用于发出单个请求

请参考javadoc


第二次调用
getInputStream()
不会给你一个新的流,它只会给你一个你已经读过的流,而这个流已经没有什么可读的了

如果您真的想读两遍内容,我建议您在第一次阅读时将其复制到
字符串
(如果内容不是文本,则复制到
字节[]
)。然后,您可以从
字符串
字节[]
中读取它两次


如果内容特别大,另一种选择是将其复制到临时文件。

为什么要多次阅读?只需将值保存在变量中

List<String> inputLines =new ArrayList<String>();
String inputLine;
while ((inputLine = in.readLine()) != null) 
inputLines.add(inputLine);
List inputLines=new ArrayList();
字符串输入线;
而((inputLine=in.readLine())!=null)
输入行。添加(输入行);

通过connect()方法或openconnection()方法发送“GET”请求?如果connect发出实际的“GET”请求,那么如果我们使用相同的httpurlcconnection实例再次连接,为什么在这种情况下我们得不到结果?我想检查HttpURLConnection的实例实际指的是什么。在上面的代码中,如果在打印星号之后。我再次调用HttpURLConnection.connect,那么我也得不到输入流。为什么会这样?Hirak的回答解释了这一点。