我有这个问题导致我把头撞在墙上。我正在编写一个报纸应用程序,它从数据库中解析JSON中的数据并显示它。该应用程序工作正常,并通过WiFi和4G传输数据,但在3G上窒息。大部分时间在3G上获取数据需要30秒到1分钟,而在WiFi上只需要一到两秒钟。我经常收到一条警告消息:HttpHostConnectException:Connection拒绝。我知道该网站运行良好,并没有引起问题,因为我可以在WiFi和4G上查询很好,同时从桌面导航就没问题。作为另一个测试,我借用我的同事只在我们地区的3G同事MiFi,并将我的设备连接到它,它传递数据很好,虽然它只有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;
}
答案 0 :(得分:0)
我的MiFi上的3G速度是否同样慢?否则,听起来你说你的进程在连接缓慢的地方失败了。
你提到3G需要> 30秒。你在app引擎上运行吗? GAE对交易的持续时间有严格的限制 - 我相信限制是30秒。
如果您在服务器上添加了延迟,以便即使Wifi请求在3G测试正在进行时也会花费多少 - 以验证是否是导致失败的时间。
另外,我认为那些3G结果听起来相当糟糕。我不知道你检索了多少数据,但它听起来确实不应该花那么长时间。因此,您的3G连接可能只是质量差的连接(而MiFi可能是更好的3G连接)。