在3g上进行JSON解析会导致连接被拒绝

时间:2013-03-08 02:17:21

标签: android json wifi 3g 4g

我有这个问题导致我把头撞在墙上。我正在编写一个报纸应用程序,它从数据库中解析JSON中的数据并显示它。该应用程序工作正常,并通过WiFi和4G传输数据,但在3G上窒息。大部分时间在3G上获取数据需要30秒到1分钟,而在WiFi上只需要一到两秒钟。我经常收到一条警告消息:HttpHostConnectException:Connection拒绝。我知道该网站运行良好,并没有引起问题,因为我可以在WiFi和4G上查询很好,同时从桌面导航就没问题。作为另一个测试,我借用我的同事只在我们地区的3G同事MiFi,并将我的设备连接到它,它传递数据很好,虽然它只有3G回到互联网。所以在看了这个,并试图找到解决方案后,我得出的结论是,我可能没有在我的方面做正确的事情。据我所知,一切都很好,但我不是专家。任何有关这方面的见解将不胜感激。

摘要 -

  • 4G =工作
  • WiFI =工作
  • 3G =极慢
  • 3G通过WiFi(3G上的MiFi)=工作

    public JSONObject makeHttpRequest(String url,String method,List params){

    // Making HTTP request
    try {
    
         if(method == "GET"){
            // request method is GET
            DefaultHttpClient httpClient = new DefaultHttpClient();
            String paramString = URLEncodedUtils.format(params, "utf-8");
            url += "?" + paramString;
            HttpGet httpGet = new HttpGet(url);
            HttpResponse httpResponse = httpClient.execute(httpGet);
            HttpEntity httpEntity = httpResponse.getEntity();
            is = httpEntity.getContent();
            System.out.println("---GET--- Now grabing GET DATA");
        }           
    
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    
    try {
        BufferedReader reader = new BufferedReader(new InputStreamReader(
                is, "iso-8859-1"), 8);
        StringBuilder sb = new StringBuilder();
        String line = null;
        while ((line = reader.readLine()) != null) {
            sb.append(line + "\n");
        }
        is.close();
        json = sb.toString();
    } catch (Exception e) {
        Log.e("Buffer Error", "Error converting result " + e.toString());
    }
    
    // try parse the string to a JSON object
    try {
        jObj = new JSONObject(json);
    } catch (JSONException e) {
        Log.e("JSON Parser", "Error parsing data " + e.toString());
    }
    
    // return JSON String
    return jObj;
    

    }

1 个答案:

答案 0 :(得分:0)

我的MiFi上的3G速度是否同样慢?否则,听起来你说你的进程在连接缓慢的地方失败了。

你提到3G需要> 30秒。你在app引擎上运行吗? GAE对交易的持续时间有严格的限制 - 我相信限制是30秒。

如果您在服务器上添加了延迟,以便即使Wifi请求在3G测试正在进行时也会花费多少 - 以验证是否是导致失败的时间。

另外,我认为那些3G结果听起来相当糟糕。我不知道你检索了多少数据,但它听起来确实不应该花那么长时间。因此,您的3G连接可能只是质量差的连接(而MiFi可能是更好的3G连接)。