벽에 머리를 두 드리도록 한이 문제가 있습니다. JSON의 데이터를 데이터베이스에서 파싱하고 표시하는 신문 앱을 작성하고 있습니다. 응용 프로그램은 잘 작동하고 와이파이 및 4G에서 데이터를 전달하지만 3G에서 질식합니다. 대부분의 경우 Wi-Fi에서 1 초에서 2 초 정도 걸리며 3G에서 데이터를 가져 오는 데 30 초에서 1 분 정도 걸립니다. 나는 종종 경고 메시지를 받는다 : HttpHostConnectException : Connection refused. 나는 사이트가 완벽하게 작동하고 문제가없는 것으로 알고 있습니다. 문제가없는 데스크톱에서 탐색하는 것과 함께 WiFi 및 4G에서 정상적으로 쿼리 할 수 있기 때문입니다. 또 다른 테스트로서, 우리 지역의 3G에있는 동료 인 MiFi를 빌려 내 장치를 연결했는데 인터넷에 3G로만 돌아 가면서 데이터를 전달합니다. 그래서 이것을보고 해결책을 찾으려고했을 때, 나는 제 마지막으로 무언가를하지 않을 수도 있다는 결론에 도달했습니다. 내가 아는 한 최선은 모든 것이 좋지만 나는 전문가가 아니다. 이것에 대한 어떤 통찰력이라면 크게 감사 할 것입니다.3G에서 JSON 구문 분석 결과 연결이 거부되었습니다.
Summary--
- 4G는 = =
- 와이파이 작동
- 3G = 매우 느린
3G 와이파이 (3G에는 MiFi)를 통해 = 작동
공개 된 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;
}
MiFi는 -69dBm의 타워에 연결되며 3G에만 있지만 데이터는 정상적으로 전달됩니다. 그래서 MiFi는 전화에 비해 속도가 똑같습니다. 나는 태블릿과 전화를 시험해 보았고 똑같은 문제를 겪었다. 이것은 http://pastebin.com/2PPRpkdw를 통해 전달 된 데이터의 평균 크기입니다. – gbrewster
~ 3G에서 30 초 대 ~ 그렇지 않으면 이상한 일이 있습니다. 안드로이드에서 GAE 서버로의 JSON HTTP 요청을 처리하며, 서버가 차가 워진 경우를 제외하고는 3G에서 1 초 이내에 완료됩니다. 서버에서 시간을 측정 했습니까? – Tom
신문사에서 관리하고 있기 때문에 웹 서버에 액세스 할 수 없지만 테스트를 위해 동일한 데이터베이스를 설정했습니다. 테스트 서버에 연결하면 정상적으로 작동하지만 라이브 데이터베이스에 연결할 때만 문제가 발생하는 것으로 보입니다 (3G 전용. WiFi는 훌륭하게 작동합니다). 지금까지 세 가지 장치를 테스트했으며 아직 분실 상태입니다. 내 책의 서버 문제를 가리키는 것이지만, 전화를 걸기 전에 신문 회사에 질문을하는 것은 그것이 나의 목적이 아닌지 확인하고 싶었습니다. – gbrewster