getInputStream
我在URLConnection
课堂上遇到了方法问题。我知道在其他线程中讨论了一些其他类似的问题,但在我的情况下似乎没有单一的解决方案有效。
有趣的是,随着第一次执行顺利,更多的执行失败(阻塞)。在描述这个问题之前,我想写一些背景知识。这里是。
基本上我有简单的客户端-服务器配置。由于我不想在客户端应用程序中对服务器地址和端口进行硬编码,因此我使用 HTTP 服务器 ( nginx
),可以从中检索实际的连接参数。
在客户端,有一个由服务控制的“网络线程”。服务启动线程并在需要时中断它。在run()
方法的最开始调用以下函数:
private ConnectionParameters obtainConnectionParameters(String url) throws MalformedURLException, IOException {
URLConnection connection = new URL(url).openConnection();
InputStream in = connection.getInputStream(); // here the problem occurs
... // do some processing
in.close();
return connectionParameters;
}
获取连接参数后,打开另一个套接字连接。一段时间后,线程可能会关闭或只是到达run()
方法的结尾。我仔细检查了它是否干净地退出。
回到这个问题,我不知道是什么导致了这种情况发生。您是否有任何线索可能导致这种行为?
我还想提一下,服务和网络线程在与活动分开的(后台)进程中运行。在这个过程中没有其他地方URLConnection
可以使用。值得注意的是,方法中使用的所有变量obtainConnectionParameters
都是本地的。
我想描述中没有任何重要的东西遗漏。否则请告诉我,以便我编辑我的帖子。
编辑(1):
我刚刚在线程Make an HTTP request with android中尝试了 apache HTTP 客户端
,它运行良好。不过,我很想找出问题所在URLConnection
。