我已经构建了一个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版本。如果这是一直发生的事情,我确切地知道出了什么问题,但有时只会发生:(但它很痛苦,因为我无法超越它。