0

我正在尝试为我的应用创建用户个人资料页面。我成功连接到 Facebook,因此我使用了用户基本个人资料 userProfile = Profile.getCurrentProfile(); 现在我正在尝试创建用户个人资料图片的可绘制对象以放入图像视图中。为此,我创建了一个输入流来获取图像(在 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 handshake aborted 我在网上找不到任何帮助。这似乎不是授权问题,因为我可以连接到 Facebook 并获取数据。我做错了什么?

4

1 回答 1

0

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

因此,您可以使用代替 HttpURLConnection来启用对安全 url ( https://..)的访问。URLConnection所以修改以下行:

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

有了这个:

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

详细信息可以在这里找到。

于 2015-04-09T11:04:12.153 回答