실제로 내가 올바른 트위터와 얻기 위해 HTTP 청원을하게 코드의 JSON과 성문화 사용자로부터 약간의 트윗을HTTP를 만드는 방법 빠른 요청을 받으시겠습니까?
괜찮아, 잘 작동 (이 파일 .json를 얻을),하지만의 loooooooooooooot 소요 디버깅 나는 문제가 줄에 있음을 볼 수 있습니다. HttpResponse response = httpclient.execute(httpget);
트윗의 수가 3 개 또는 4 개의 트윗보다 많으면 초에 막히게됩니다. 20 개의 트윗을 요청하는 경우 10 ~ 15 초가 소요됩니다.
내가 사용하고있는 java/android http get 메소드의 문제점은 Firefox에서 url로 요청하면 매우 빠릅니다.
어떻게하면이 http를 빠르게 요청할 수 있습니까?
이 내 실제 느린 코드 :
public List<String> RetrieveTweets(String name, int num) //da todas las posiciones dado un email
{
// https://api.twitter.com/1/statuses/user_timeline.json?include_entities=true&include_rts=true&screen_name=charliesheen&count=2
List<String> tweetsList= new ArrayList<String>();
String result = "";
//http get
InputStream is=null;
try{
HttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet("https://api.twitter.com/1/statuses/user_timeline.json?include_entities=true&include_rts=true&screen_name=" + name +"&count="+ num);
HttpResponse response = httpclient.execute(httpget);
HttpEntity entity = response.getEntity();
is = entity.getContent();
}catch(Exception e){
Log.e("log_tag", "Error in http connection "+e.toString());
}
//convert response to string
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();
result=sb.toString();
}catch(Exception e){
Log.e("log_tag", "Error converting result "+e.toString());
}
//parse json data
try{
JSONArray jArray = new JSONArray(result);
for(int i=0;i<jArray.length();i++)
{
JSONObject json_data = jArray.getJSONObject(i);
tweetsList.add(json_data.getString("text")); //text es el nombre del campo del tweet
}
}
catch(JSONException e){
Log.e("log_tag", "Error parsing data "+e.toString());
}
return tweetsList;
}
디버깅 HttpClient.execute()가 매우 느리다는 것을 알리는 블로그 항목을 발견했습니다 (http://codepainters.wordpress.com/2010/01/23/androids-https-implementation-slow-under-debugger/)./타이밍을 로그 아웃하면 더 빠릅니까? – flob
try-stream-while-append-catch 난교 –
대신에'result = EntityUtils.toString (entity);'를 사용하고 싶을 수도 있습니다. * 주석 블록에 * 코드 블럭을 표시하면 블록을 메소드로 추출하십시오. –