2017-05-31 63 views
0

我在运行我的代码时遇到问题,打开HTTP请求后我试图检索响应代码,但程序停止运行在打印语句上 下面是我的代码:我打电话时程序停止运行getResponseCode()

private static HttpURLConnection openHttpConnection(URL url, String method){ 
try { 
HttpURLConnection connection = null; 
connection = (HttpURLConnection) url.openConnection(); 
connection.setRequestMethod(method); 
connection.setRequestProperty("Content-Type", 
"application/json;charset=UTF-8"); 
connection.setRequestProperty("Accept", "application/json"); 
System.out.println(connection.getResponseCode()); 
} 
catch (Exception exception) { 
exception.printStackTrace(); 
} 

该程序停在最后一行,当我打开许多HTTP请求后,问题出现在彼此之后。 注意:当我调试相同的代码时,它与配音一起使用,但不与运行。 此问题出现在8个HTTP请求之后。

请帮忙。谢谢。

+0

你说你的程序在8个请求后挂起。你在某个时候是否会关闭你的联系?他们真的关闭了吗(在操作系统级别)?如果你的连接仍然是打开/挂起的,那么服务器(无论你连接到什么地方)的连接可能会耗尽...... – sruetti

回答

0

你把这些代码行放在try/catch块中吗? 可能会引发异常,捕捉它以获取堆栈跟踪将有助于获取信息。 此外,更多有关执行上下文的信息会更方便:这是什么类型的应用程序,以及来自哪里,依此类推。

+0

是的,我把它放在try/catch块中,url作为方法的参数给出,我更新了代码上面..谢谢。 –

+0

在极少数情况下,没有抛出异常,但是是一个Throwable。 解决方案可能是抓住它,但不推荐(https://stackoverflow.com/questions/6083248/is-it-a-bad-practice-to-catch-throwable)。 然后,您将获得更多关于发生的事情的信息。恕我直言,你可以暂时捕捉它。 – Javert0

+0

我把Throwable块,但问题仍然存在。 –

0
  • 如果你的程序,而不打印任何响应代码停在最后一行(即JVM退出),异常必须已被getResponseCode抛出()。这个例外很可能会告诉你问题是什么。作为Javert0指出,你会发现此异常的位置取决于你的环境 - 最坏的情况下捕捉任何异常,自己打印...

  • 如果你的程序最后一行挂connection.getResponseCode()可能没有得到回应从服务器并等待超时。因为在询问响应代码(connection.getResponseCode())之前,您没有明确的connection.connect(),所以问题几乎可以是任何事情:超时(无响应的服务器/网络/ DNS/...),无效的结果,缺少权限,...

+0

我把catch块,但没有抛出那里。 –

+0

你确定connection.getResponseCode()被调用吗?你的代码是否退出getResponseCode(),即退出JVM或挂起(等待无限期超时/等待)? – sruetti