2012-02-10 98 views
1

我有一個奇怪的問題。我使用HttpURLConnection,當我conn.readInputStream()時,我得到一個RuntimeException。它並不總是可複製的,但用戶已經報告了這個堆棧跟蹤。在開發過程中,我從來沒有遇到過這個問題,所以我個人不知道是什麼導致了錯誤。請提供關於這個stacktracee的任何建議。HttpURLConnection RuntimeException

java.lang.RuntimeException: java.util.NoSuchElementException 
at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.verifyCertificateChain(OpenSSLSocketImpl.java:692) 
at org.apache.harmony.xnet.provider.jsse.NativeCrypto.SSL_do_handshake(Native Method) 
at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:485) 
at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:323) 
at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection.setupSecureSocket(HttpConnection.java:167) 
at org.apache.harmony.luni.internal.net.www.protocol.https.HttpsURLConnectionImpl$HttpsEngine.makeSslConnection(HttpsURLConnectionImpl.java:479) 
at org.apache.harmony.luni.internal.net.www.protocol.https.HttpsURLConnectionImpl$HttpsEngine.makeConnection(HttpsURLConnectionImpl.java:419) 
at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl … veResponse(HttpURLConnectionImpl.java:1038) 
at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:523) 
at org.apache.harmony.luni.internal.net.www.protocol.https.HttpsURLConnectionIm … nputStream(HttpsURLConnectionImpl.java:283) 
at com.facebook.android.Util.openUrl(Util.java:245) 
at com.facebook.android.Facebook.request(Facebook.java:730) 
at com.facebook.android.AsyncFacebookRunner$2.run(AsyncFacebookRunner.java:313) 
Caused by: java.util.NoSuchElementException 
at java.util.LinkedList$LinkIterator.next(LinkedList.java:122) 
at org.apache.harmony.security.x501.Name.getName0(Name.java:195) 
at org.apache.harmony.security.x501.Name.getName(Name.java:135) 
at javax.security.auth.x500.X500Principal.getCanonicalName(X500Principal.java:155) 
at javax.security.auth.x500.X500Principal.hashCode(X500Principal.java:286) 
at java.util.HashMap.get(HashMap.java:302) 
at org.apache.harmony.xnet.provider.jsse.IndexedPKIXParameters.isTrustAnchor(IndexedPKIXParameters.java:113) 
at org.apache.harmony.xnet.provider.jsse.TrustManagerImpl.cleanupCertChain(TrustManagerImpl.java:194) 
at org.apache.harmony.xnet.provider.jsse.TrustManagerImpl.checkTrusted(TrustManagerImpl.java:144) 
at org.apache.harmony.xnet.provider.jsse.TrustManagerImpl.checkServerTrusted(TrustManagerImpl.java:132) 
at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.verifyCertificateChain(OpenSSLSocketImpl.java:681) 
... 12 more 

回答

3

此問題是由於您正在從您的應用創建https連接並打開安全連接,因此您需要在設備上安裝必要的證書。

+0

我是怎麼做到的?我的意思是我可以拿到證書的地方。 – fdmirza 2012-02-10 14:42:51

0

可能有點晚,但是如果你試圖獲取的資源不存在,就會發生這種情況。 例如,您正在嘗試讓用戶使用ID爲500(/ user/500),但這個名稱在您要撥打的服務器上不存在。