在android sdk中的Facebook个人资料图片上使用getInputStream()时,Openssl握手失败

时间:2015-04-09 10:37:55

标签: android facebook inputstream facebook-sdk-4.0 sslhandshakeexception

我正在尝试为我的应用创建用户个人资料页面。 我成功连接到Facebook,所以我使用userProfile = Profile.getCurrentProfile();获得用户基本个人资料 现在我正在尝试创建一个用户个人资料图片的drawable放入图像视图。为此,我创建了一个输入流来获取图像(在asyncTask上运行)

            Bitmap x;
            url =  new URL("https://graph.facebook.com/939344862743414/picture?height=200&width=200");
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setRequestProperty("User-agent","Mozilla/4.0");
            connection.setConnectTimeout(100000);
            connection.connect();
            BufferedInputStream buf = new BufferedInputStream(connection.getInputStream());
            x = BitmapFactory.decodeStream(buf);

然而,无论我做什么,应用程序都会失败并在到达connection.getInputStream()时崩溃。错误是javax.net.ssl.SSLProtocolException:SSL握手中止 我在网上找不到任何帮助。它似乎不是授权问题,因为我可以连接到Facebook并获取数据。 我做错了什么?

1 个答案:

答案 0 :(得分:0)

该问题由网址创建。由于 URL 包含https,这意味着Web服务器证书由知名CA颁发,因此您可以发出安全请求。当您使用HttpURLConnection时,它不支持安全网址。

因此,您可以在HttpURLConnection的位置使用https://..启用对安全网址(URLConnection)的访问权限。所以修改以下行:

HttpURLConnection connection = (HttpURLConnection) url.openConnection();

这一个:

URLConnection connection = (URLConnection) url.openConnection();

Detail information can be found here.