Java 如何使用HttpClient下载连续的数据流?

Java 如何使用HttpClient下载连续的数据流?,java,android,Java,Android,我目前正在使用HttpURLConnection流式传输直播内容,如广播。然而,使用似乎是一个更好的选择,因为它得到了Android的良好支持,并且是一个更好的实现。此外,似乎有一个逻辑自动重新连接从一个丢失的连接 我的问题是我不能让它工作。调用httpclient.execute(…)时,它总是挂起 我做错了什么 HttpClient httpclient = new DefaultHttpClient(); HttpGet httpget = new HttpGet("http://208.

我目前正在使用HttpURLConnection流式传输直播内容,如广播。然而,使用似乎是一个更好的选择,因为它得到了Android的良好支持,并且是一个更好的实现。此外,似乎有一个逻辑自动重新连接从一个丢失的连接

我的问题是我不能让它工作。调用httpclient.execute(…)时,它总是挂起

我做错了什么

HttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet("http://208.76.243.123:7100");
HttpResponse response = httpclient.execute(httpget);
HttpEntity entity = response.getEntity();

在调试器中运行它,当它挂起时,调用break。然后找到正在执行代码的线程,并在堆栈跟踪中查看它被阻塞的确切位置。您将看到它是否在IO上被阻止,或者发生了其他事情。有了这些数据,识别问题就更容易了。

在调试器中运行它,当它挂起时,调用break。然后找到正在执行代码的线程,并在堆栈跟踪中查看它被阻塞的确切位置。您将看到它是否在IO上被阻止,或者发生了其他事情。有了这些数据,就更容易发现问题

  • 您确定您的服务器理解HTTP协议吗?(我想是的,听起来你有一个不同的客户在工作)。execute方法可能正在阻塞,因为它尚未看到有效的响应头

  • 您可能需要
    entity.getContent()
    ,它将返回流的句柄。见问题

  • 您确定您的服务器理解HTTP协议吗?(我想是的,听起来你有一个不同的客户在工作)。execute方法可能正在阻塞,因为它尚未看到有效的响应头

  • 您可能需要
    entity.getContent()
    ,它将返回流的句柄。见问题