2013-02-28 44 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。