Ich versuche, ein Bild mit ihrer API auf Twitter hochzuladen, aber es schlägt immer fehl, die Datei nicht finden zu können, obwohl sie definitiv da ist, seit ich sie benutze den gleichen Pfad, um es gut in andere Netzwerke zu laden, und es wird korrekt in meiner Vorschau angezeigt.Fehler beim Hochladen eines Bildes nach Twitter mit Hilfe der API
com.twitter.sdk.android.core.TwitterApiException: /-1/1/content:/media/external/images/media/100883/ORIGINAL/NONE/1159437588: open failed: ENOENT (No such file or directory)
W/System.err: at retrofit.RestAdapter$RestHandler.invokeRequest(RestAdapter.java:390)
W/System.err: at retrofit.RestAdapter$RestHandler.access$100(RestAdapter.java:220)
W/System.err: at retrofit.RestAdapter$RestHandler$2.obtainResponse(RestAdapter.java:278)
W/System.err: at retrofit.CallbackRunnable.run(CallbackRunnable.java:42)
W/System.err: at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:423)
W/System.err: at java.util.concurrent.FutureTask.run(FutureTask.java:237)
W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
W/System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
W/System.err: at java.lang.Thread.run(Thread.java:818)
Einige googeln zeigte dieser Fehler in einer älteren Version des Twitter-SDK für Android gemeint war festgelegt worden, und die Menschen haben bestätigt, es war, aber das war vor einer Weile und ich die neueste Version verwenden 1.13.0
.
Der Code Ich verwende diese zu laden ist wie folgt:
//img = Uri passed from calling method
File photo = new File(img.getPath());
TypedFile typedFile = new TypedFile("application/octet-stream", photo);
TwitterApiClient twitterApiClient = TwitterCore.getInstance().getApiClient(twitSession);
MediaService mediaService = twitterApiClient.getMediaService();
final StatusesService statusesService = twitterApiClient.getStatusesService();
mediaService.upload(typedFile, null, null, new Callback<Media>() {
@Override
public void success(final Result<Media> result) {
statusesService.update(input, null, null, null, null,
null, null, null, result.data.mediaIdString, new Callback<Tweet>() {
@Override
public void success(Result<Tweet> result) {
Log.d("Twitter image callback", "Successfully posted image and text to Twitter!");
}
@Override
public void failure(TwitterException e) {
if (result != null) {
Log.e("Twitter image callback", "Result is - " + result.toString());
}
Log.d("Twitter image callback", "Failed to post image and text to Twitter!");
}
});
}
@Override
public void failure(TwitterException e) {
Log.d("Twitter image callback", "Failed to upload image to Twitter!");
e.printStackTrace();
}
});
Weiß jemand, was hier passiert und wie ich in der Lage diese Arbeit zu bekommen?
Diese sehen sehr kompliziert, einfach eine Datei hochladen. Ich bin nicht sicher, dass dies eine externe Bibliothek (TwitterApiClient) verwendet, aber wenn nicht, müssen Sie sicherstellen, dass Sie weniger als 5 MB pro Chunk hochladen. Außerdem müssen Sie eine MultiPart-Abfrage verwenden, die INIT, APPEND (mit Binärcode) und END aufruft. – Linvi
Wenn es möglich ist, C# zu verwenden, würde ich die Bibliothek, die ich geschrieben habe ([Twetinvi] (https://github.com/linvi/tweetinvi)) empfehlen, um ein Bild so einfach wie möglich zu veröffentlichen: 'var media = Upload.UploadImage (Datei.ReadAllBytes ("Pfad")); ' – Linvi