【问题标题】:HttpURLConnection timeout on long polling (comet) - android长轮询(彗星)上的 HttpURLConnection 超时 - android
【发布时间】:2012-02-02 08:59:02
【问题描述】:

我正在尝试从彗星 URL 链接中检索 json 字符串。

这里是 API 链接:http://www.plurk.com/API#realtime 这是描述:

您将从 /APP/Realtime/getUserChannel 获得一个 URL,然后对该 URL 执行 GET 请求以获取新数据。如果没有新数据添加到您的频道,您的请求将在返回响应之前休眠大约 50 秒。您不会收到有关登录用户添加的响应的通知,但您会收到有关新 plurk 的通知。

我能够获取 comet_server 网址并将其粘贴到 firefox 并手动获取结果。但是,当我尝试在android中获取这些json字符串时,我只得到了超时错误。

01:48:51.698 com.net.xerothermic.plurk 信息 PLURK http://comet58.plurk.com:80/comet?channel=...&offset=0

01:53:43.680 com.net.xerothermic.plurk ERROR PLURK HTTP con.得到 响应错误:连接超时

这是我用来检索数据的代码。

    URL url = new URL(urlString);
    HttpURLConnection conn = null;
    try
    {
        conn = (HttpURLConnection) url.openConnection();
    }
    catch (IOException ex)
    {
        Log.e("PLURK", "HTTP con. open error:" + ex.getMessage());
        return "";
    }
    try
    {
        conn.setRequestMethod("GET");
    }
    catch (ProtocolException ex)
    {
        Log.e("PLURK", "HTTP con. set method error:" + ex.getMessage());
    }
    try
    {
        return conn.getResponseMessage();
    }
    catch (IOException ex)
    {
        Log.e("PLURK", "HTTP con. get response error:" + ex.getMessage());
        return "";
    }

非常感谢任何建议!

编辑:这里是浏览器的输出。我错过了设置一些属性吗?

【问题讨论】:

  • 您可能需要增加读取超时时间 - 因为您收到的消息明确指出读取超时。看here(例如)。
  • 是的,我也在考虑。但默认超时值为 0,这意味着它应该永远等待。从日志来看,确实需要超过 50 秒才能生成超时(~5 分钟)。
  • @Jens 你是对的!虽然默认超时值设置为 0,但我仍然需要手动设置超时值。在我将它们设置为 70000(70 秒)后,程序运行成功。奇怪的是,在 PC 上运行的相同代码没有这些行为,我不需要设置超时值。
  • 是的,Android 并不总是按照您的预期行事。

标签: java android comet


【解决方案1】:

即使超时值默认设置为 0(意味着无限等待),我发现我仍然需要显式设置超时值才能不引发 IOException。

setConnectTimeout(70000);
setReadTimeout(70000);

这仅在 android 上需要,而在 Windows 上不需要...

【讨论】:

  • 我认为它只是不稳定。我需要多尝试几个 wifi 点才能得出结论......
  • 对于这个问题感兴趣的人,请确保您在应用程序中设置了 Web 回调 URL,即 Twitter。我不知道为什么它是必要的,但是一旦我设置它,它就可以正常工作。
猜你喜欢
  • 1970-01-01
  • 2014-01-11
  • 2011-11-16
  • 2011-06-18
  • 1970-01-01
  • 2015-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多