android JSON中的SessionExpiredException错误

时间:2014-10-31 07:37:24

标签: android json session ssl json-rpc

在android RESTFUL webservice中,

  1. HttpClient client = new DefaultHttpClient(); - 我得到了成功回复。

  2. 但现在我的网址已更改为http为https(SSL)。 - 此网址不受信任证书。

  3. 所以我使用以下@Daniel代码。

    Trusting all certificates using HttpClient over HTTPS

    1. 如果我使用client = WebClientDevWrapper.getNewHttpClient();代替DefaultClient() - ,则会收到sessionExpiredException错误。
    2. 任何帮助??

1 个答案:

答案 0 :(得分:3)

我希望你使用这种方法

public void connect() throws Exception  {

        HttpPost post = new HttpPost(new URI(""));
        post.setEntity(new StringEntity(""));
        trustAll();
        HttpClient client = new DefaultHttpClient();
        HttpResponse result = client.execute(post);
    }

在HttpsURLConnection之前添加此代码,它将完成。

private void trustAll() { 
    try { 
            HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier(){ 
                    public boolean verify(String hostname, SSLSession session) { 
                            return true; 
                    }}); 
            SSLContext context = SSLContext.getInstance("TLS"); 
            context.init(null, new X509TrustManager[]{new X509TrustManager(){ 
                    public void checkClientTrusted(X509Certificate[] chain, 
                                    String authType) throws CertificateException {} 
                    public void checkServerTrusted(X509Certificate[] chain, 
                                    String authType) throws CertificateException {} 
                    public X509Certificate[] getAcceptedIssuers() { 
                            return new X509Certificate[0]; 
                    }}}, new SecureRandom()); 
            HttpsURLConnection.setDefaultSSLSocketFactory( 
                            context.getSocketFactory()); 
    } catch (Exception e) { 
            Log.e("TAG",e); 
    } 
}

这种方法让我接受证书,并尝试增加会话时间。