Https网址不起作用,但http url在android中工作正常

时间:2015-11-30 17:17:23

标签: android url web

请指导我在这段代码中找到问题,当我使用带有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)

2 个答案:

答案 0 :(得分:2)

要使https url连接在android中工作,请使用HttpsUrlConnection而不是HttpUrlConnection。 请参阅Documentation此处

答案 1 :(得分:0)

相关问题