- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在尝试使用在同一网络中的主机上运行的 HttpsURLConnection 连接到 Web 服务时遇到以下异常。防火墙已关闭。有趣的是,如果我在 Eclipse 中通过默认的 Java JRE 1.7 环境运行以下代码,一切正常。
但是如果我在有自己的 jre 文件夹的产品代码中使用这些函数,它会抛出以下异常 -
Caused by: java.net.SocketException: Software caused connection abort: recv failed
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:173)
at java.net.SocketInputStream.read(SocketInputStream.java:122)
at com.rsa.sslj.x.aP.c(Unknown Source)
at com.rsa.sslj.x.aP.a(Unknown Source)
at com.rsa.sslj.x.aP.a(Unknown Source)
at com.rsa.sslj.x.aP.h(Unknown Source)
at com.rsa.sslj.x.cy.startHandshake(Unknown Source)
at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:563)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1300)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)
我注意到 java.security 文件中的安全提供者列表不同。
这是列表 -
security.provider.1=com.rsa.jsafe.provider.JsafeJCE
security.provider.2=com.rsa.jsse.JsseProvider
security.provider.3=sun.security.provider.Sun
security.provider.4=sun.security.rsa.SunRsaSign
security.provider.5=com.sun.net.ssl.internal.ssl.Provider
security.provider.6=com.sun.crypto.provider.SunJCE
security.provider.7=sun.security.jgss.SunProvider
security.provider.8=com.sun.security.sasl.Provider
security.provider.9=org.jcp.xml.dsig.internal.dom.XMLDSigRI
security.provider.10=sun.security.smartcardio.SunPCSC
security.provider.11=sun.security.mscapi.SunMSCAPI
这些是我的功能-
private InputStream Get(URL url,String keyStoreString, String keyStorePassword) {
SSLSocketFactory sslFactory;
try {
sslFactory = getSSLSocketFactory(keyStoreString, keyStorePassword);
javax.net.ssl.HttpsURLConnection
.setDefaultHostnameVerifier(new javax.net.ssl.HostnameVerifier() {
public boolean verify(String hostname,
javax.net.ssl.SSLSession sslSession) {
if (hostname.equals("vmm")) {
return true;
}
return false;
}
});
HttpsURLConnection con = (HttpsURLConnection) url.openConnection();
con.setSSLSocketFactory(sslFactory);
con.setRequestMethod("GET");
con.setRequestProperty("Accept", "application/json");
InputStream responseStream = con.getInputStream();
return responseStream;
}catch (Exception e) {
//log errer
}
}
private SSLSocketFactory getSSLSocketFactory(String keyStoreString,
String password) throws KeyStoreException,
NoSuchAlgorithmException, CertificateException, IOException,
UnrecoverableKeyException, KeyManagementException, AzureException {
KeyStore ks = getKeyStore(keyStoreString, password);
KeyManagerFactory keyManagerFactory = KeyManagerFactory
.getInstance("SunX509");
keyManagerFactory.init(ks, password.toCharArray());
// Trustmanager which trusts all certificate. Not a good idea in
// production code.
final TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() {
@Override
public void checkClientTrusted(final X509Certificate[] chain,
final String authType) {
}
@Override
public void checkServerTrusted(final X509Certificate[] chain,
final String authType) {
}
@Override
public X509Certificate[] getAcceptedIssuers() {
return null;
}
} };
SSLContext context = SSLContext.getInstance("TLS");
context.init(keyManagerFactory.getKeyManagers(), trustAllCerts,
new SecureRandom());
return context.getSocketFactory();
}
我需要让这些功能在产品代码中发挥作用。任何帮助将不胜感激。提前致谢!!
最佳答案
当 RSA Jsafe 的优先级高于 Sun 提供程序时,尝试使用 SunX509
KeyManagerFactory
可能会导致与幕后其他工厂的混淆。
如果 RSA Jsafe 提供了自己的 KeyManagerFactory 实现,也许可以尝试:
KeyManagerFactory keyManagerFactory =
KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
(除非您真的想要 SunX509 KMF,否则在您的事业中使用默认算法通常是更好的选择,这样就不必依赖于特定的提供商。适用时,对于 TrustManagerFactories 也是如此。)
关于java.net.SocketException : Software caused connection abort: recv failed when using different jre security 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22760124/
我正在尝试使用一个使用 JNI 的库。 我已经尝试了开发人员提供的示例应用程序,它可以工作。所以我知道这不是库中的错误。 我认为我在导入库的过程中做错了什么: 将 .so 文件复制到我的 libs 文
使用Websphere 应用程序服务器 + Wicket 1.6我的挂载 URL 遇到一些问题。 当我调用类似于以下内容的网址时:localhost:9080/danesCooking/pies/me
我有一个应用程序在 Win2k3 VM 上的 Apache Tomcat 5.5 上运行。该应用程序提供 XML,供某些电话设备使用,作为我们 IVR 基础设施的一部分。反过来,应用程序从一些 SOA
升级到雅加达给我带来了一些问题。。我正在使用以下maven插件:。并且我使用episodal编译(有库)。突然间,我面临着以下问题:。更仔细的检查发现,XJC突然生成了以下字段:。这是它以前没有产生的
Jenkins 有一个可用于自由式构建作业的 $CAUSE 变量。 如何在工作流程中访问此内容或类似内容? 我的团队在现有临时构建的电子邮件输出中使用它。我们希望在新的基于工作流的工作中继续这样做。
错误:无法完成 Gradle 执行。 原因: Could not create parent directory for lock file C:\Program Files\Android\Andr
如何确定多个浏览器 UI 事件是否由相同的基本 UI 交互引起? 例如,用户单击和事件监听器会触发“blur”和“mousedown”事件。有没有办法确定这两个事件都是由一次用户点击引起的? 最佳答案
它可以编译,但不会从 .o 文件链接到可执行文件。我已经删除了从现在到运行良好时所做的所有更改(基本上,str_to_int 中的所有内容)。 我的代码: #include #include in
关于 Java 的 InterruptedException 有一些有趣的问题和答案。 ,例如 The Cause of InterruptedException和 Handling Interrup
我使用 android 工具 “内存监视器” 来修复内存泄漏。这很有帮助。 但是,我需要澄清一下。 有时在运行该应用程序后,分配的内存为“47MB”。当与应用交互时,它会上下移动。 然后当我点击“ca
我正在调查由于堆损坏而导致的崩溃。由于这个问题很重要并且涉及分析堆栈和转储结果,因此我决定对与崩溃相关的文件进行代码审查。 坦率地说,我对堆何时可能损坏没有深入的了解。 如果您能提出可能导致堆损坏的方
假设我们有一个名为 feature-branch 的功能分支。该分支的开发人员分支获取他们的票,然后打开一个 PR 到 feature-brach。 如果发生以下情况: 开发人员A从feature-b
两个线程同时访问fileName。 Set If 0 使死锁。但如果 1 一切顺利。 那么是什么导致了这种情况? 最佳答案 确保您没有在主线程上同步调用 +[PHAssetResource asset
不幸的是,我还不是正则表达式专家,因此遇到了以下问题:假设我有一个包含多个链式异常的 Java 堆栈跟踪,我想要达到的是提取以“Caused by”开头的最后一行。 javax.servlet.Ser
我确信这是我所缺少的非常简单的东西。我使用 makeKeyAndOrderFront: 打开一个窗口,它第一次工作。当我关闭窗口并尝试再次打开它时,它退出并给出错误EXC_BAD_ACCESS。我的代
我刚刚探索了 Rank2Types 和 RankNTypes,试图熟悉它们。但我不明白为什么以下不起作用。 g :: (forall a. forall b. a -> b) -> x -> y ->
我想验证输入是否严格是由 10-16 个字符长组成的数字。根据用户输入值,我将在输入字段下方显示一条消息。问题是,当我去使用时为了帮助完成此任务,它会导致应用程序抛出异常。 我是 JSF 新手,我很难
许多内置的 Java 异常无法接受“原因”。有什么方法可以为这些异常指定原因吗? 我希望能够链接异常,就像这个 InterruptedException 示例一样: try{ //thread
我创建了一个 JSP Mysql 和 Bootstrap Crud 应用程序。当我单击“更新”按钮时,将调用函数 validation() 来更新所有字段,在成功更新后,它将重定向到另一个 JSP 页
我看到了奇怪的情况:在我的 Android 应用程序代码中使用类似这样的东西时我没有收到任何错误: @Override public void onBackPressed() { if
我是一名优秀的程序员,十分优秀!