我已经成功设置了twitter4j,现在可以发布文本更新,并将本地媒体从设备上传到twitter。但我真正需要做的是从网络上分享远程图像 - 例如http://example.com/image.png
。
当我执行此代码时......
StatusUpdate statusUpdate = new StatusUpdate("Hello Twitter");
String imageUrl = "http://example.com/image.png";
File file = new File(imageUrl);
statusUpdate.setMedia(file);
twitter4j.Status status = twitter.updateStatus(statusUpdate);
...看起来twitter4j试图将url视为本地,因为它似乎在它前面放了一个/
,然后抛出异常说...
/http://example.com/image.png: open failed: ENOENT (No such file or directory)
如何解决?感谢。
答案 0 :(得分:6)
我发现还有另一种setMedia()
方法接受输入流作为其参数之一。此输入流可以链接到远程图像,如...
StatusUpdate statusUpdate = new StatusUpdate("Hello Twitter");
String imageUrl = "http://example.com/image.png";
URL url = new URL(imageUrl);
URLConnection urlConnection = url.openConnection();
InputStream in = new BufferedInputStream(urlConnection.getInputStream());
statusUpdate.setMedia("image.png", in);
twitter4j.Status status = twitter.updateStatus(statusUpdate);
//might be a good idea to close the inputstream in a finally block
答案 1 :(得分:0)
我也有同样的问题,我找到的解决方法是将图像下载到手机上,然后使用以下代码将其发布到Twitter上:
StatusUpdate status = new StatusUpdate(String status);
File file = new File(imageFilePath);
status.setMedia(file);
mTwitter.updateStatus(status);