2013-02-28 71 views
0

我使用HTTP代理使用下面的代碼:HTTP代理不工作HTC渴望運行Android 2.2

DefaultHttpClient client = new DefaultHttpClient(); 
HttpHost proxy = new HttpHost(proxyHost, proxyPort, "http"); 
client.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy); 

能正常工作的幾款Android設備,所有運行Android 2.3及更高版本。然而,當我試圖在HTC慾望運行android 2.2.2時,我得到以下例外:

java.lang.IllegalArgumentException 
java.net.InetSocketAddress.<init>(InetSocketAddress.java:98) 
java.net.InetSocketAddress.<init>(InetSocketAddress.java:89) 
org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.<init>(OpenSSLSocketImpl.java:238) 
org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImplWrapper.<init>(OpenSSLSocketImplWrapper.java:35) 
org.apache.harmony.xnet.provider.jsse.OpenSSLSocketFactoryImpl.createSocket(OpenSSLSocketFactoryImpl.java:83) 
de.bahn.android.ris.communication.http.EasySSLSocketFactory.createSocket(EasySSLSocketFactory.java:136) 
org.apache.http.impl.conn.DefaultClientConnectionOperator.updateSecureConnection(DefaultClientConnectionOperator.java:225) 
org.apache.http.impl.conn.AbstractPoolEntry.layerProtocol(AbstractPoolEntry.java:302) 
org.apache.http.impl.conn.AbstractPooledConnAdapter.layerProtocol(AbstractPooledConnAdapter.java:146) 
org.apache.http.impl.client.DefaultRequestDirector.establishRoute(DefaultRequestDirector.java:623) 
org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:352) 
org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555) 
org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:487) 
org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:465) 

有沒有人見過這種行爲?謝謝!

回答

0

正如在https://android-review.googlesource.com/#/c/15755/中指出的那樣,這看起來是一個在某些時候已經解決的錯誤,很可能在2.2之後解決。我找到了解決這一這裏http://code.google.com/p/android/issues/detail?id=2690,這是更換

HttpResponse response = httpclient.execute(httpRequest); 

int port = httpRequest.getURI().toString().startsWith("https") ? 443 : 80; 
HttpHost host = new HttpHost(httpRequest.getURI().getHost(), port, httpRequest.getURI().getScheme()); 
HttpResponse response = httpclient.execute(host, httpRequest); 

顯然的問題是,該端口沒有被正確設置和的InetSocketAddress設置爲0。

相關問題