发送Base64位图并间歇性地获取ProtocolException

时间:2016-03-18 20:08:08

标签: java android exception mobile sslhandshakeexception

我已经构建了一个Android应用程序,用于将摄像头捕获的图像发送到我们的服务器。我将Bitmap转换为Base64 String视图,代码如下:

ByteArrayOutputStream byteArrayOS = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOS);
return Base64.encodeToString(byteArrayOS.toByteArray(), Base64.DEFAULT);

现在我遇到了一些问题,其中一个就是我会间歇性地得到一个 SSLHandshakeException 但是每次都不会发生这样的问题,所以我不会发生这样的问题。非常困惑,我已经尝试了很多不同的角度来解决这个问题与StackOverflow可能的解决方案,但似乎没有任何工作。

确切的例外是

javax.net.ssl.SSLHandshakeException: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0x601201b8: Failure in SSL library, usually a protocol error

错误:14077410:SSL例程:SSL23_GET_SERVER_HELLO:sslv3警报握手失败(外部/ openssl / ssl / s23_clnt.c:742 0x5d066d74:0x00000000)

它似乎确实有效,但我无法确定哪些因素可以让它工作而不是工作。此外,我认为在某些时候它可能是超时问题所以我将 HttpsURLConnection 的超时限制设置为任意大的数字,例如。

        secureConnection = (HttpsURLConnection) url.openConnection();
        secureConnection.setConnectTimeout(100000);
        HttpURLConnection.setFollowRedirects(false);
        secureConnection.setRequestMethod(requestType.toString());
        secureConnection.setRequestProperty("Content-Type", contentType.toString());
        secureConnection.setConnectTimeout(3000);
        secureConnection.setReadTimeout(3000);
        secureConnection.setDoInput(true);
        secureConnection.setDoOutput(true);

我尝试的另一个解决方案是尝试接受所有证书,以防我的设备拒绝服务器证书 How to solve javax.net.ssl.SSLHandshakeException Error?

其他一些信息是我在Android 4.4设备上测试此内容,并使用最新的Android Studio版本。如果这是一直发生的事情,我确切地知道出了什么问题,但有时只会发生:(但它很痛苦,因为我无法超越它。

0 个答案:

没有答案