Java 无法在android中执行HTTPS/SSL/
因为我是android studio的新手,所以我想使用自己的web服务(REST客户端) 我试图在android中执行httprequest。 url正在使用https ssl证书,我得到一个错误消息Java 无法在android中执行HTTPS/SSL/,java,android,ssl,httpclient,Java,Android,Ssl,Httpclient,因为我是android studio的新手,所以我想使用自己的web服务(REST客户端) 我试图在android中执行httprequest。 url正在使用https ssl证书,我得到一个错误消息 javax.net.ssl.SSLPeerUnverifiedException: No peer certificate android studio 这是我的代码: private void executeRequest(HttpUriRequest request, String ur
javax.net.ssl.SSLPeerUnverifiedException: No peer certificate android studio
这是我的代码:
private void executeRequest(HttpUriRequest request, String url)
{
HostnameVerifier hostnameVerifier = org.apache.http.conn.ssl.SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER;
DefaultHttpClient client = new DefaultHttpClient();
SchemeRegistry registry = new SchemeRegistry();
SSLSocketFactory socketFactory = SSLSocketFactory.getSocketFactory();
socketFactory.setHostnameVerifier((X509HostnameVerifier) hostnameVerifier);
registry.register(new Scheme("https", socketFactory, 443));
SingleClientConnManager mgr = new SingleClientConnManager(client.getParams(), registry);
DefaultHttpClient httpClient = new DefaultHttpClient(mgr, client.getParams());
HttpClient client = new DefaultHttpClient();
HttpResponse httpResponse;
try {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
httpResponse = client.execute(request);
responseCode = httpResponse.getStatusLine().getStatusCode();
message = httpResponse.getStatusLine().getReasonPhrase();
HttpEntity entity = httpResponse.getEntity();
if (entity != null) {
InputStream instream = entity.getContent();
response = convertStreamToString(instream);
// Closing the input stream will trigger connection release
instream.close();
}
} catch (ClientProtocolException e) {
client.getConnectionManager().shutdown();
e.printStackTrace();
} catch (IOException e) {
client.getConnectionManager().shutdown();
e.printStackTrace();
}
}
我也尝试了这个代码,但没有工作太多
public static HttpClient createHttpClient()
{
HttpParams params = new BasicHttpParams();
HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
HttpProtocolParams.setContentCharset(params, HTTP.DEFAULT_CONTENT_CHARSET);
HttpProtocolParams.setUseExpectContinue(params, true);
SchemeRegistry schReg = new SchemeRegistry();
schReg.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
schReg.register(new Scheme("https", SSLSocketFactory.getSocketFactory(), 443));
ClientConnectionManager conMgr = new ThreadSafeClientConnManager(params, schReg);
return new DefaultHttpClient(conMgr, params);
}
谢谢您是否已检查配置文件以允许网络连接?检查xml配置文件并尝试允许internet连接。您是否已检查所访问的服务器是否具有正确的证书链?请参阅hey hack_on,如何检查我的url是否具有正确的证书链,我猜它具有https和ssl证书。嘿,我已经在中进行了测试,我得到了一个和trusted=Yes。还有什么我能做的吗?请允许我对这个问题感到非常沮丧。在安卓设备上,从默认浏览器点击它——这样行吗?Android/Java如何知道信任服务器——签署服务器证书的顶级证书是否已经被浏览器信任?看看如何做到这一点。是的,它的工作,我认为这是没有问题的网址,这是因为我的代码。也许我错过了什么?你是说在舱单上?是的,我已经添加了上网权限。