我一直在监控我的应用程序错误,我看到下面的错误太多次了
javax.net.ssl.SSLHandshakeException: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0xb8f0fc28: Failure in SSL library, usually a protocol error
错误:14077410:SSL例程:SSL23\u GET\u SERVER\u HELLO:sslv3警报握手失败(外部/openssl/SSL/s23\u clnt.c:741 0xaa48cd5c:0x00000000)-javax。网ssl。SSLHandshakeException:javax。网ssl。SSLProtocolException:SSL握手中止:SSL=0xb8f0fc28:SSL库中出现故障,通常是协议错误:14077410:SSL例程:SSL23_GET_SERVER_HELLO:sslv3警报握手失败(外部/openssl/SSL/s23_clnt.c:741 0xaa48cd5c:0x00000000)
您可以看到错误是关于SSLV3的,我的服务器只支持TLSV1。2.
似乎在某些客户机上,Volley退回到使用SSLV3(出于某种原因),并且他们得到了一个错误。
获得此错误的用户在Android4.4.2, 4.4.4和4.1.1及更多。
有趣的是,我也在同一个应用程序中使用DefaultHttpClient,但它似乎没有报告相同的问题。
我在截击中使用默认的投掷堆栈
我看过以下...在HttpsURLConnection中禁用SSL作为协议
和https://code.google.com/p/android/issues/detail?id=78187
那么我有什么选择呢?
>
我的假设正确吗,截击落回SSLV3?
为什么截击会退回到SSLV3?换句话说,导致回退的最初失败是什么?如何解决?
我最近下载了截击,但我不确定它是最新的。如何找到我的版本?。
有什么想法吗?
您的服务器不支持SSLv3,因为它有一些安全问题,不应该使用。
当使用Kitkat之前的Android版本时,您必须使用删除SSLv3的套接字工厂,以用作默认配置:
public class VolleyToolboxExtension extends Volley {
/** Default on-disk cache directory. */
private static final String DEFAULT_CACHE_DIR = "volley";
/**
* Creates a default instance of the worker pool and calls {@link RequestQueue#start()} on it.
*
* @param context A {@link Context} to use for creating the cache dir.
* @param stack An {@link HttpStack} to use for the network, or null for default.
* @return A started {@link RequestQueue} instance.
*/
public static RequestQueue newRequestQueue(Context context, HttpStack stack) {
File cacheDir = new File(context.getCacheDir(), DEFAULT_CACHE_DIR);
String userAgent = "volley/0";
try {
String packageName = context.getPackageName();
PackageInfo info = context.getPackageManager().getPackageInfo(packageName, 0);
userAgent = packageName + "/" + info.versionCode;
} catch (PackageManager.NameNotFoundException e) {
}
if (stack == null) {
if (Build.VERSION.SDK_INT >= 9) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
// Use a socket factory that removes sslv3
stack = new HurlStack(null, new NoSSLv3Compat.NoSSLv3Factory());
} else {
stack = new HurlStack();
}
} else {
// Prior to Gingerbread, HttpUrlConnection was unreliable.
// See: http://android-developers.blogspot.com/2011/09/androids-http-clients.html
stack = new HttpClientStack(AndroidHttpClient.newInstance(userAgent));
}
}
Network network = new BasicNetwork(stack);
RequestQueue queue = new RequestQueue(new DiskBasedCache(cacheDir), network);
queue.start();
return queue;
}
/**
* Creates a default instance of the worker pool and calls {@link RequestQueue#start()} on it.
*
* @param context A {@link Context} to use for creating the cache dir.
* @return A started {@link RequestQueue} instance.
*/
public static RequestQueue newRequestQueue(Context context) {
return newRequestQueue(context, null);
}
}
可以在以下位置找到NoSSLv3Compat类:https://github.com/Floens/volley/blob/master/src/com/android/volley/compat/NoSSLv3Compat.java
使用此扩展创建您的请求队列:
/**
* @return The Volley Request queue, the queue will be created if it is null
*/
public RequestQueue getRequestQueue() {
// lazy initialize the request queue, the queue instance will be
// created when it is accessed for the first time
if (mRequestQueue == null) {
// Create the request queue
mRequestQueue = VolleyToolboxExtension.newRequestQueue(getApplicationContext());
}
return mRequestQueue;
}
您也可以使用改型而不是截击,因为Square发布了该库的2.1版本,支持TLS版本配置:
http://square.github.io/retrofit/
问题内容: 为什么在代码的指定位置出现ConcurrentModificationException?我无法弄清楚自己在做什么错… 正在使用该方法在列表中找到分钟,将其删除并返回其值 问题答案: 一旦修改了从其获得的Collection,则不应认为Iterator可用。(对于java.util.concurrent。*集合类,放宽了此限制。) 您首先要获得一个Iterator ,然后进行修改。修改
问题内容: 我在代码的第34行上不断收到LineUnavailableException:https://www.refheap.com/21223 错误显示为。 我正在创建Sound类的多个实例(在我的refheap粘贴中实现)。似乎最初的实例没有问题。但是,当我开始使用相同的音频文件制作Sound对象的新实例时,便开始出现此错误。 知道如何解决吗? EIDT:我认为这个问题的 想法可能是我需要
我每次都会得到新的回应。 我想知道为什么用第一种方法得到同样的reponse?
我尝试在Jasper报告中格式化日期,它适用于Windows但不适用于Linux。对于Linux,结果文本被截断。 JRXML: Maven依赖关系: 我读到: 用jasperreport生成的PDF在Linux上显示不佳,但在Mac上显示良好,可能与os有关吗? http://community.jaspersoft.com/questions/527138/pdf-text-truncated
我使用反应原生66时运行得到错误 Yarn run v1.22.17$react-原生run-android info运行jetifier将库迁移到AndroidX。您可以使用“--no-jetifier”标志禁用它。Jetifier发现1428个文件要转发jetify。使用4个工作人员... info JS服务器已经运行。信息安装应用程序...配置项目:react-nate-fire base
我正在尝试使用Minecraft Forge 1.8库为Minecraft开发一个mod。对于我的mod,我决定创建自己的自定义箭头,从我的自定义弩中发射。在为箭头放置我的Item、Entity和Render类后,我发现箭头继续击中玩家,但它被抛出。我尝试实现并对箭头的射手进行了调试检查,但我找不到问题。 这是来自EntityArrow类的代码:onUpdate(): 在弩中的鼠标右键单击()中声