我对android很新。
我使用Parse作为Baas进行Twitter身份验证,据我所知,我只能得到一个com.parse.twitter.Twitter对象而不是twitter4j.Twitter对象。
我尝试使用此代码在Android应用中从twitter下载并显示个人资料图片图片:
String twitterURL = "https://api.twitter.com/1.1/users/profile_banner.json?screen_name=myScreenName";
//根据此处的文档https://dev.twitter.com/rest/reference/get/users/profile_banner
然后我想用毕加索 。Picasso.with(aView.getContext())负载(twitterURL).resize(100150).centerCrop()代入(ImageView的);
但没有显示任何内容......
我也尝试过该代码:
URL url = new URL(twitterURL);
InputStream is = (InputStream) url.getContent();
Drawable d = Drawable.createFromStream(is, "src name");
但是收到错误FileNotFoundException。
非常感谢您的帮助。
答案 0 :(得分:3)
我自己遇到了这个问题而且从来没有找到一个好的答案,所以你的代码帮助我搞清楚了!
您正在获取的InputStream实际上是JSON格式(例如{" id":4646546," name":" ian"," profile_image_url& #34;:" http://pbs.twimg.com/profile_images/1138330557/ian-straw_normal.jpg"})。所以你不能从中创建一个drawable。 Twitter API文档提供了一个示例结果:https://dev.twitter.com/rest/reference/get/users/show。
你可以摆脱' _normal'如果你想以原始尺寸获取图像。
使用此profile_image_url,您可以获取您感兴趣的图像。您可以使用Android Query或Picasso来执行此操作。只要您不在主UI线程上执行此操作,您也可以执行另一个HttpRequest。
您的代码变为(我忽略了try / catch块以提高可读性):
HttpClient client = new DefaultHttpClient();
HttpGet verifyGet = new HttpGet(
"https://api.twitter.com/1.1/users/show.json?screen_name=" + handle);
ParseTwitterUtils.getTwitter().signRequest(verifyGet);
HttpResponse response = client.execute(verifyGet);
InputStream is = response.getEntity.getContent();
JSONObject responseJson = new JSONObject(IOUtils.toString(is));
url = responseJson.getString("profile_image_url");
final AQuery androidQuery = new AQuery(this);
//fetch and set the image from internet, cache with file and memory
androidQuery.id(R.id.image1).image(url);
注意:AQuery为您提供了更多选择。如果需要,您可以直接在位图中获取图像。请参阅:https://code.google.com/p/android-query/wiki/AsyncAPI#Bitmap
答案 1 :(得分:0)
我自己没有对此进行测试,但我认为它应该指向正确的方向。
Twitter API现在要求您对每个API请求进行身份验证。
HttpClient client = new DefaultHttpClient();
HttpGet verifyGet = new HttpGet(
"https://api.twitter.com/1.1/users/profile_banner.json?screen_name=myScreenName");
ParseTwitterUtils.getTwitter().signRequest(verifyGet);
HttpResponse response = client.execute(verifyGet);
HttpEntity entity = response.getEntity();
InputStream is = entity.getContent();
所以我认为你有两个问题: