长轮询(彗星)上的HttpURLConnection超时 - android

时间:2012-02-02 08:59:03

标签: java android comet

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

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

  

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

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

  

01:48:51.698 com.net.xerothermic.plurk INFO 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 "";
    }

非常感谢任何建议!

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

1 个答案:

答案 0 :(得分:0)

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

setConnectTimeout(70000);
setReadTimeout(70000);

仅在Android上需要,但不需要Windows ...