Android 尝试使用Facebook ID获取Facebook图像时获取空位图

Android 尝试使用Facebook ID获取Facebook图像时获取空位图,android,facebook,bitmap,Android,Facebook,Bitmap,这是我正在使用的代码 String imageURL; Bitmap bitmap = null; imageURL = "http://graph.facebook.com/" + fbID + "/picture?type="; try { bitmap = BitmapFactory.decodeStream((InputStream) new URL(imageURL) .getContent()); }

这是我正在使用的代码

String imageURL;
    Bitmap bitmap = null;

    imageURL = "http://graph.facebook.com/" + fbID + "/picture?type=";
    try {
        bitmap = BitmapFactory.decodeStream((InputStream) new URL(imageURL)
                .getContent());

    } catch (Exception e) {
        e.printStackTrace();
    }
当我在浏览器中使用此URL时,它会显示图像,但当尝试在位图中获取它时,它会给出null


我检查了很多问题,但没有任何帮助。

这个问题是因为Facebook使用其graph API url仅仅作为重定向端点。如果复制粘贴facebook个人资料图片URL,如

http://graph.facebook.com/subinsebastien/picture

实际上,Facebook会将您重定向到实际的图像URL。因此,当您尝试使用graph API url打开输入流时,实际上不会得到位图,而是得到重定向响应。就我而言,这就是我被重定向到的地方

https://scontent-b.xx.fbcdn.net/hprofile-prn1/l/t5.0-1/48771_100000333400619_475851971_q.jpg


因此,我建议您首先使用一个实际值来获取位图。

这个问题是因为Facebook仅将其graph API url用作重定向端点。如果复制粘贴facebook个人资料图片URL,如

http://graph.facebook.com/subinsebastien/picture

实际上,Facebook会将您重定向到实际的图像URL。因此,当您尝试使用graph API url打开输入流时,实际上不会得到位图,而是得到重定向响应。就我而言,这就是我被重定向到的地方

https://scontent-b.xx.fbcdn.net/hprofile-prn1/l/t5.0-1/48771_100000333400619_475851971_q.jpg


因此,我建议您首先使用实际值获取位图。

此代码适用于我的HTTPGet:

                HttpGet httpRequest = new HttpGet(URI.create(linkUrl) );
                HttpClient httpclient = new DefaultHttpClient();
                HttpResponse response = (HttpResponse) httpclient.execute(httpRequest);
                HttpEntity entity = response.getEntity();
                BufferedHttpEntity bufHttpEntity = new BufferedHttpEntity(entity);
                bmap = BitmapFactory.decodeStream(bufHttpEntity.getContent());
                httpRequest.abort();

此代码适用于我的HTTPGet:

                HttpGet httpRequest = new HttpGet(URI.create(linkUrl) );
                HttpClient httpclient = new DefaultHttpClient();
                HttpResponse response = (HttpResponse) httpclient.execute(httpRequest);
                HttpEntity entity = response.getEntity();
                BufferedHttpEntity bufHttpEntity = new BufferedHttpEntity(entity);
                bmap = BitmapFactory.decodeStream(bufHttpEntity.getContent());
                httpRequest.abort();

是的,你说得对。当我使用这个url(静态)时,它会给出结果。你对我如何使用HTTPGet有什么建议吗?是的,你说得对。当我使用这个url(静态)时,它会给出结果。你对我如何使用HTTPGet.Worked有什么建议吗。谢谢你为我祈祷。谢谢