请指导我在这段代码中找到问题,当我使用带有HTTP的url然后它工作正常但是使用HTTPS它会给出问题。我用google搜索但找不到解决方案。如果有人指导我节省我的时间,那将是值得的。谢谢
public String doRequest() {
String serverUrl = Constants.BASE_URL + mAction;
Log.d("usm_serverUrl",serverUrl);
if (mParams != null) {
serverUrl += "?" + mParams;
}
Log.d("usm_serverUrl",serverUrl);
try {
URL url = new URL(serverUrl);
HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
conn.setRequestProperty("User-Agent", "application/json");
conn.setRequestMethod("GET");
if(conn.getResponseCode() == HttpsURLConnection.HTTP_OK){
// Do normal input or output stream reading
Log.d("usm_requestCode","Successful");
}
else {
Log.d("usm_requestCode","Failed");
// response = "FAILED"; // See documentation for more info on response handling
}
//HttpURLConnection conn = (HttpURLConnection) url.openConnection();
InputStream in = new BufferedInputStream(conn.getInputStream());
Log.d("debug", "get-url: " + serverUrl);
String response = IOUtils.toString(in, "UTF-8");
Log.d("debug", "get-url: " + serverUrl + "\n post-response: " + response);
return response;
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
我遇到以下异常:
11-30 22:43:30.553 5031-5398/com.dhcollator.routetoschool W/System.err﹕ javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
11-30 22:43:30.554 5031-5398/com.dhcollator.routetoschool W/System.err﹕ at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:410)
11-30 22:43:30.554 5031-5398/com.dhcollator.routetoschool W/System.err﹕ at com.android.okhttp.Connection.upgradeToTls(Connection.java:146)
11-30 22:43:30.554 5031-5398/com.dhcollator.routetoschool W/System.err﹕ at com.android.okhttp.Connection.connect(Connection.java:107)
11-30 22:43:30.554 5031-5398/com.dhcollator.routetoschool W/System.err﹕ at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:294)
11-30 22:43:30.554 5031-5398/com.dhcollator.routetoschool W/System.err﹕ at com.android.okhttp.internal.http.HttpEngine.sendSocketRequest(HttpEngine.java:255)
11-30 22:43:30.554 5031-5398/com.dhcollator.routetoschool W/System.err﹕ at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:206)
11-30 22:43:30.554 5031-5398/com.dhcollator.routetoschool W/System.err﹕ at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:345)
11-30 22:43:30.554 5031-5398/com.dhcollator.routetoschool W/System.err﹕ at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:296)
11-30 22:43:30.554 5031-5398/com.dhcollator.routetoschool W/System.err﹕ at com.android.okhttp.internal.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:179)
11-30 22:43:30.555 5031-5398/com.dhcollator.routetoschool W/System.err﹕ at com.android.okhttp.internal.http.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:246)
答案 0 :(得分:2)
要使https url连接在android中工作,请使用HttpsUrlConnection而不是HttpUrlConnection。 请参阅Documentation此处
答案 1 :(得分:0)
引用链接,它将有助于HttpsUrlConnection而不是HttpUrlConnection。 http://developer.android.com/reference/javax/net/ssl/HttpsURLConnection.html
http://www.java-samples.com/java/POST-toHTTPS-url-free-java-sample-program.htm