簡體   English   中英

Java / Android-https無法在Apache http中運行

[英]Java/Android - https not working in apache http

因此,我想使用此XML解析器類從我的一個站點中解析一個XML文件,該站點充當API。 所以我在這里遇到了這個XMLParser類: XMLParser.java

由於我在網站上使用了https,因此我很快發現這將無法使用,除非在代碼中實現了SSL,然后在SSL中使用以下方法從URL提取XML文件:

getXmlFromUrl(String url)

因此,對於我的測試環境,我很快創建了一個新的httpClient方法,該方法可以接受任何SSL證書。

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);
    }

這是完成后的最終XMLParser.java。 XMLParser_New.java

但這一切都是徒勞的,因為我反復得到以下例外。

javax.net.ssl.SSLPeerUnverifiedException:沒有對等證書

我哪里出錯了,或者我不明白是什么。 謝謝 :)

您如何實施SSL。 您是否已按照以下步驟實施它:

  1. 需要在服務器上創建X.509證書。
  2. 將受信任的CA存儲在終端側。
  3. 在兩端加密和解密消息。

您是否正在使用自簽名證書。 然后,您需要將該證書存儲在設備上並加載您自己的信任庫,以檢查SSL證書,而不是android默認的信任庫。

這是在Android上實現SSL的很好的文章: http : //www.codeproject.com/Articles/826045/Android-security-Implementation-of-Self-signed-SSL

我認為在您的情況下,缺少終端側的信任證書。 這就是它引發此異常的原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM