我在我的Android应用程序中遇到了一个问题,在我的一个片段中,我使用volley来执行网络请求:
JsonObjectRequest request = new JsonObjectRequest(
Request.Method.POST,
CustomNetworkManager.getInstance(this.getActivity().getApplicationContext()).getRequestUrl(url),
requestData,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
// process response
} catch (JSONException e) {
e.printStackTrace();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d("FeedFragment", "Volley error: " + error.toString());
}
});
在一个真实的设备上,我得到以下错误(运行API 23):
D/FeedFragment: Volley error: com.android.volley.NoConnectionError: javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
在运行相同API版本的AVD中,它工作正常。我检查了其他类似的线程,但找不到答案。
谢谢你的帮助
edit:如果有人遇到同样的错误,请确保您的证书没有任何问题(http://developer.android.com/intl/pt-br/training/articles/security-ssl.html#CommonProblems)
5条答案
按热度按时间bq8i3lrv1#
尝试将此函数添加到您的应用程序中:
然后在Application onCreate中调用它。
更新:
此代码不相关,不应使用!这是Google禁止的。有关更多信息,请查看here。
toe950272#
万一有人还在用Volley...
按照此处的说明操作:
https://developer.android.com/training/articles/security-ssl#java
下载证书文件(.crt),将其放入assets目录(在java和res目录旁边),然后更改以下代码:
使用资源中的文件:
忘了后面的部分吧
并添加一行:
在建立任何连接之前运行此代码。
就这样
inb24sb23#
这解决了我的问题,试图运行我的android凌空应用程序对弧焊机只需要运行一次。。在最初的飞溅活动
z9smfwbn4#
步骤1:创建一个实现
X509TrustManager
的HttpsTrustManager
类:步骤2:在发出
HTTPS
请求之前添加HttpsTrustManager.allowAllSSL()
:tzcvj98z5#
我的问题是查尔斯。配置/关闭它,一切都为我工作