2011-05-30 20 views
1

我有使用在Android 2.2 SSL一些困难的Android 2.2 Froyo 我的自定义HTTP客户端的SSL工作finly较早和较旧版本的Android, ,但对2.2 HTTPS请求不运行所有ATT 。 这里我的代码:解决粗野,用DefaultHttpClient

public class SSLHttpClient extends DefaultHttpClient { 

    final Context context; 

    public SSLHttpClient(Context context,HttpParams params) { 
     super(params); 
     this.context = context; 
    } 

    @Override 
    protected ClientConnectionManager createClientConnectionManager() { 
     SchemeRegistry registry = new SchemeRegistry(); 
     registry.register(new Scheme("http", PlainSocketFactory 
       .getSocketFactory(), 80)); 

     registry.register(new Scheme("https", newSslSocketFactory(), 443)); 
     return new SingleClientConnManager(getParams(), registry); 
    } 

    private SSLSocketFactory newSslSocketFactory() { 
     try {   
      SSLSocketFactory sf = new SSLSocketFactory(keyStore,"",trustStore); 

       //---------some code-------------------------------------- 

      return sf; 
     } catch (Exception e) { 
      throw new AssertionError(e); 
     } 
    } 
} 

我发现了一些类似的文章,但他们并没有解决我的问题。 也许有人遇到这样的问题。 在此先感谢......

+0

你说的不工作的意思。你得到什么错误。 – 2011-05-30 15:32:09

+0

我有这样的问题: http://stackoverflow.com/questions/2899079/custom-ssl-handling-stopped-working-on-android-2-2-froyo 但是,从这里的解决方案并没有帮助我。 在此先感谢。 – drifter 2011-06-01 16:55:41

回答

0

这样的配置对我的作品(测试它不添加80端口):

SchemeRegistry registry   = new SchemeRegistry(); 
SSLSocketFactory sslSocketFactory = SSLSocketFactory.getSocketFactory(); 
sslSocketFactory.setHostnameVerifier(SSLSocketFactory.BROWSER_COMPATIBLE_HOSTNAME_VERIFIER); 
registry.register(new Scheme("https", sslSocketFactory, 443)); 
SingleClientConnManager manager = new SingleClientConnManager(params, registry); 
+0

感谢您的回答。 我会在接下来几天测试这种方法,并让我们了解结果。此时我推迟了这个问题。 – drifter 2011-06-01 16:52:12