Как правильно загрузить сообщение в твиттере с изображением

#java #android #twitter

#java #Android #Twitter

Вопрос:

Я пытаюсь реализовать функцию загрузки изображений в моем приложении для Android с помощью Twitter API. Я видел много примеров, таких как:

     private void uploadImage(File imagefile, final String tweettext){
    TypedFile typedFile = new TypedFile("image/*", imagefile);
    TwitterApiClient twitterApiClient = new TwitterApiClient(twitterSession);
    MediaService mediaservice = twitterApiClient.getMediaService();
    mediaservice.upload(typedFile, null, null, new Callback<Media>() {
        @Override
        public void success(Result<Media> result) {
            postTweet(tweettext, result.data.mediaIdString);
            tweetMediaFile = null;
            iv1.setImageDrawable(null);
        }

        @Override
        public void failure(TwitterException e) {
            Toast.makeText(MainActivity.this, "Medienupload fehlgeschlagen. Bitte erneut versuchen.", Toast.LENGTH_SHORT).show();
        }
    });

}
  

Но поскольку в новой версии Twitter API другие параметры для MediaService.upload (RequestBody, RequestBody, RequestBody), я пытаюсь сделать так:

 private void uploadImage(File imagefile, final String tweettext) throws IOException {

    RequestBody rb = RequestBody.create(MediaType.parse("image/*"), imagefile);
    TwitterApiClient twitterApiClient = new TwitterApiClient(twitterSession);
    MediaService mediaservice = twitterApiClient.getMediaService();
    Response<Media> uploadResponse = mediaservice.upload(rb, null, null).execute();

    if (uploadResponse.isSuccessful()) {
        postTweet(tweettext, uploadResponse.body().mediaIdString);
        tweetMediaFile = null;
        iv1.setImageDrawable(null);
    } else {
        Toast.makeText(TweetPostActivity.this, "Medienupload fehlgeschlagen. Bitte erneut versuchen.",
                Toast.LENGTH_SHORT).show();
    }

}
  

У меня это не работает — mediaIdString из ответа ( uploadResponse.body().mediaIdString ) пусто. Есть идеи, где я допустил ошибку? Спасибо за помощь.

Комментарии:

1. Определить «не работает»

2. я вижу, что я пытаюсь получить mediaIdString из моего ответа (uploadResponse.body().mediaIdString), но я получаю пустое значение, вот почему я предполагаю, что мой метод не работает. Хм, возможно, мне следует найти другой способ получить мой MediaID.

3. хорошо, теперь я вижу, в чем моя проблема. Я получаю исключение IOException по адресу: Response<Media> uploadResponse = mediaservice.upload(rb, null, null).execute(); Есть предложения, как правильно использовать mediaservice.upload?