【问题标题】:Java http read timeout issueJava http读取超时问题
【发布时间】:2023-03-11 23:50:01
【问题描述】:

我正在尝试从远程服务器获取一些数据。为此,我使用HttpURLConnection。问题是有时建立连接后的服务器只是挂起或什么,没有关闭连接,我挂在那里。那个挂起的线程也获得了锁,所以所有其他线程都在吸:D 代码:

try {
        URL url = new URL(urlString);
        URLConnection urlConnection = url.openConnection();
        HttpURLConnection connection = (HttpURLConnection) urlConnection;

        BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream(), Charset.forName(CharEncoding.UTF_8)));
        StringBuilder sb = new StringBuilder();
        String line;
        while ((line = br.readLine()) != null) {

最后一行是我们要挂的地方。我找到了方法setConnectTimeout(timeout),但似乎情况并非如此,因为在建立连接之前它是超时的。解决这种情况的常用方法是什么?

【问题讨论】:

  • 连接建立前超时?那么你不会一直到while循环,还是我误解了什么??
  • 对不起,我在这里写得不清楚。我的意思是在类 HttpURLConnection 中找到了这样的方法;)我的代码中没有超时..
  • 不用担心,如果我能帮助解决问题,我很高兴 :)

标签: java http networking


【解决方案1】:

假设您的意思是在建立连接后超时(可能在读取期间),这样的事情怎么样

URLConnection urlConnection = url.openConnection();
urlConnection.setConnectTimeout(c_timeout);
urlConnection.setReadTimeout(r_timeout);
stream = urlConnection.getInputStream();

【讨论】:

  • 哦,没找到这个方法。似乎读取超时将解决此问题。谢谢!明天试试。
猜你喜欢
  • 2021-05-08
  • 2011-06-02
  • 1970-01-01
  • 1970-01-01
  • 2016-05-19
  • 2012-07-17
  • 2021-12-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多