Я делаю твиттер-проект, чтобы искать все общедоступные твиты с определенным ключевым словом. Следующие врезается мое приложение:Twitter4j, поиск твитов с ключевым словом
private void searchTweets() {
ConfigurationBuilder cb = new ConfigurationBuilder();
cb.setDebugEnabled(true)
.setOAuthConsumerKey(getString(R.string.twitter_consumer_key))
.setOAuthConsumerSecret(getString(R.string.twitter_consumer_secret))
.setOAuthAccessToken(getString(R.string.twitter_access_token))
.setOAuthAccessTokenSecret(getString(R.string.twitter_token_secret));
TwitterFactory tf = new TwitterFactory(cb.build());
Twitter twitter = tf.getInstance();
try {
Query query = new Query("India");
QueryResult result;
do {
result = twitter.search(query);
List<Status> tweets = result.getTweets();
for (Status tweet : tweets) {
// System.out.println("@" + tweet.getUser().getScreenName() + " - " + tweet.getText());
Log.e("TweetSearch",tweet.getUser().getScreenName() + " - " + tweet.getText()) ;
}
} while ((query = result.nextQuery()) != null);
System.exit(0);
} catch (TwitterException te) {
te.printStackTrace();
// System.out.println("Failed to search tweets: " + te.getMessage());
Log.e("TweetSearch", te.getMessage());
System.exit(-1);
}
}
Я хочу, чтобы отобразить твитов в списке. Я позаботился обо всех требуемых аутентификации, и поток проверки подлинности приложения в порядке. Как я могу узнать данные JSON из найденных твитов, чтобы я мог проанализировать его в моем списке?
Я пробовал это, как реализовать asyntask?
public class LimetrayTweets extends Activity {
public static final String TAG = "TweetSearch";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_limetray_tweets);
SearchTweet("Limetray");
}
public static String SearchTweet(String searchTerm) {
HttpURLConnection httpConnection = null;
BufferedReader bufferedReader = null;
StringBuilder response = new StringBuilder();
try {
URL url = new URL(Constants.URL_SEARCH + URLEncoder.encode("#" + searchTerm) + "&result_type=mixed&lang=en");
Log.e(TAG, "url twitter search: " + url.toString());
httpConnection = (HttpURLConnection) url.openConnection();
httpConnection.setRequestMethod("GET");
String jsonString = appAuthentication();
JSONObject jsonObjectDocument = new JSONObject(jsonString);
String token = jsonObjectDocument.getString("token_type") + " " +
jsonObjectDocument.getString("access_token");
httpConnection.setRequestProperty("Authorization", token);
httpConnection.setRequestProperty("Content-Type", "application/json");
httpConnection.connect();
bufferedReader = new BufferedReader(new InputStreamReader(httpConnection.getInputStream()));
String line;
while ((line = bufferedReader.readLine()) != null){
response.append(line);
}
Log.d(TAG, "GET response code: " + String.valueOf(httpConnection.getResponseCode()));
Log.d(TAG, "JSON response: " + response.toString());
} catch (Exception e) {
Log.e(TAG, "GET error: " + Log.getStackTraceString(e));
}finally {
if(httpConnection != null){
httpConnection.disconnect();
}
}
return response.toString();
}
public static String appAuthentication(){
HttpURLConnection httpConnection = null;
OutputStream outputStream = null;
BufferedReader bufferedReader = null;
StringBuilder response = null;
try {
URL url = new URL(Constants.URL_AUTHENTICATION);
httpConnection = (HttpURLConnection) url.openConnection();
httpConnection.setRequestMethod("POST");
httpConnection.setDoOutput(true);
httpConnection.setDoInput(true);
String accessCredential = Constants.CONSUMER_KEY + ":" + Constants.CONSUMER_SECRET;
String authorization = "Basic " + Base64.encodeToString(accessCredential.getBytes(), Base64.NO_WRAP);
String param = "grant_type=client_credentials";
httpConnection.addRequestProperty("Authorization", authorization);
httpConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
httpConnection.connect();
outputStream = httpConnection.getOutputStream();
outputStream.write(param.getBytes());
outputStream.flush();
outputStream.close();
// int statusCode = httpConnection.getResponseCode();
// String reason =httpConnection.getResponseMessage();
bufferedReader = new BufferedReader(new InputStreamReader(httpConnection.getInputStream()));
String line;
response = new StringBuilder();
while ((line = bufferedReader.readLine()) != null){
response.append(line);
}
Log.d(TAG, "POST response code: " + String.valueOf(httpConnection.getResponseCode()));
Log.d(TAG, "JSON response: " + response.toString());
} catch (Exception e) {
Log.e(TAG, "POST error: " + Log.getStackTraceString(e));
}finally{
if (httpConnection != null) {
httpConnection.disconnect();
}
}
return response.toString();
}
уфф ... Чувак. Что вы устали? Я дал вам свой рабочий код для вас. вы не знаете, как его реализовать? пока не увидите, что метод возвращает ответ результатов запроса. Где вы его сохранили? 1 узнайте, как реализовать Listview. пожалуйста .. Я собираюсь удалить свой ответ .. достаточно. вы не можете даже знать, что метод возвращает что-то? Stackoverflow не ваш репетитор .. – SreeAndroidDev
Я очень ценю ваши комментарии. Я вернусь к этому проекту после обновления моих концепций. Большое вам спасибо – asdec90