您好我正在尝试在android中集成Picasso库。这是我在毕加索的load
方法中传递的网址。
网址:http://graph.facebook.com/244054592454345/picture?type=large
但是Picasso
onBitmapFailed方法回调正在调用,这意味着它无法下载位图并将drawable值变为null。
com.squareup.picasso.Target target = new com.squareup.picasso.Target() {
@Override
public void onBitmapLoaded(Bitmap bitmap, LoadedFrom loadedFrom) {
userProfile.setBitmap(bitmap);
// call the Web API to register the walker here
new AudioStreetAsyncTask(getActivity(), userProfile, getString(R.string.registration_processing_message), new TaskCompleteListener() {
@Override
public void onTaskCompleted(String jsonResponse) {
Log.d(TAG, jsonResponse);
}
});
}
@Override
public void onBitmapFailed(Drawable drawable) {
userProfile.setBitmap(null);
// call the Web API to register the walker here
new AudioStreetAsyncTask(getActivity(), userProfile, getString(R.string.registration_processing_message), new TaskCompleteListener() {
@Override
public void onTaskCompleted(String jsonResponse) {
Log.d(TAG, jsonResponse);
}
}).execute();
}
@Override
public void onPrepareLoad(Drawable drawable) {}
};
Picasso.with(getActivity()).load(imgUrl.toString()).into(target);
我无法追踪问题为什么它失败甚至你可以看到URL是正确的但它每次都失败。有什么想法吗?
答案 0 :(得分:3)
正如@Jake Wharton所说,它正在从HTTP重定向到HTTPS,而您的客户可能并非如此 妥善处理。要么使用HTTPS请求该URL,请重定向 保持相同的协议或将OkHttp放入您的应用程序(它将遵循 跨协议重定向)。
所以要么将你的http协议更新为https,它应该可以工作。
或者您可以将此Web API称为https://graph.facebook.com/244054592454345/?fields=picture.type(large)
然后你会得到这个JSON
{
"picture": {
"data": {
"is_silhouette": false,
"url": "https://fbcdn-profile-a.akamaihd.net/hprofile-ak-prn2/t1.0-1/s200x200/1472865_191408954385576_14109897_n.jpg"
}
},
"id": "244054592454345"
}
然后从此JSON获取URL,然后使用此URL获取此用户的Facebook头像。
Picasso.with(getActivity()).load("https://fbcdn-profile-a.akamaihd.net/hprofile-ak-prn2/t1.0-1/s200x200/1472865_191408954385576_14109897_n.jpg").into(target);