簡體   English   中英

Appengine Endpoints Android客戶端中的SSLProtocolException(31個客戶端中的1個)

[英]SSLProtocolException in Appengine Endpoints Android client on 1 of 31 clients

我使用生成的應用程序引擎Android客戶端(jar庫)。 31個客戶中的30個沒有問題。 但一台三星平板電腦拒絕連接並導致此崩潰:

Android:4.4.4制造商:samsung型號:SM-T533-日期:2015年8月3日星期一

javax.net.ssl.SSLHandshakeException:javax.net.ssl.SSLProtocolException:SSL握手中止:ssl = 0x743164d0:SSL庫失敗,通常是協議錯誤錯誤:1407743E:SSL例程:SSL23_GET_SERVER_HELLO:tlsv1警告不當回退(外部/ openssl /ssl/s23_clnt.c:744 0x74509f1c:0x00000000)(com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:449)at com.android.okhttp.Connection.upgradeToTls(Connection.java:146)at com。 com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:294)的com.android.okhttp.internal.http.HttpEngine.sendSocketRequest的.android.okhttp.Connection.connect(Connection.java:107) (HttpEngine.java:255)在com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:206)在com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:345) com.android.okhttp.internal.h上的com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:296) com.android.okhttp.internal.http.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:136)上的ttp.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:503)在com.google.api.client.http.javanet.NetHttpResponse。(NetHttpResponse。 .java:37),位於com.google.api.client.http.javanet.NetHttpRequest.execute(NetHttpRequest.java:94),位於com.google.api.client.http.HttpRequest.execute(HttpRequest.java:972)。 com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:352)上的com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:419)。位於nl.stackoverflow.question.RestoreDataLoader.loadInBackground(RestoreDataLoader.java:37)的api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:469)位於nl.stackoverflow.question.RestoreDataLoader.loadInBackground(RestoreDataLoader.java: 20)在android.content.AsyncTa android.content.AsyncTaskLoader $ LoadTask.doInBackground(AsyncTaskLoader.java:69)位於android.content.AsyncTaskLoader $ LoadTask.doInBackground(AsyncTaskLoader.java:57)位於skLoader.onLoadInBackground(AsyncTaskLoader.java:312)在android.os.AsyncTask在java.util.concurrent.FutureTask.run(FutureTask.java:237:$ 2.call(AsyncTask.java:288)在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)在java.util.concurrent java.lang.Thread.run(Thread.java:841)上的.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:587)原因:javax.net.ssl.SSLProtocolException:SSL握手已中止:ssl = 0x743164d0:SSL失敗庫,通常是協議錯誤錯誤:1407743E:SSL例程:SSL23_GET_SERVER_HELLO:tlsv1在com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(本地方法)中警告不當的后備(external / openssl / ssl / s23_clnt.c:744 0x74509f1c:0x00000000) )com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:406)...另外25個

ApiUtils類:

/**
 * Sales API Utility functions
 *
 * Created by Roel de Brouwer on 29-4-2015.
 */
public class ApiUtils {

    public static final String APP_NAME = BuildConfig.APP_NAME;
    public static final String WEB_CLIENT_ID = BuildConfig.WEBCLIENT_ID;
    public static final String AUDIENCE = "server:client_id:" + WEB_CLIENT_ID;
    /**
     * Class instance of the HTTP transport.
     */
    public static final HttpTransport HTTP_TRANSPORT = AndroidHttp.newCompatibleTransport();
    /**
     * Class instance of the JSON factory.
     */
    public static final JsonFactory JSON_FACTORY = new AndroidJsonFactory();

    private Context mContext;
    private String mAccountName;

    public ApiUtils(Context context, String accountName){
        this.mContext = context;
        this.mAccountName = accountName;
    }


    private GoogleAccountCredential getCredential(){
        GoogleAccountCredential credential = GoogleAccountCredential.usingAudience(mContext, AUDIENCE);
        credential.setSelectedAccountName(mAccountName);
        return credential;
    }


    /**
     * Retrieve a Sales api service handle to access the API.
     */
    public Sales getApiServiceHandle() {
        // Use a builder to help formulate the API request.
        Sales.Builder salesAPI = new Sales.Builder(HTTP_TRANSPORT, JSON_FACTORY, getCredential());
        Log.d("RootURL", salesAPI.getRootUrl());
        salesAPI.setApplicationName(APP_NAME);
        return salesAPI.build();
    }

    /**
     * @return Sales Api
     */
    public Sales.SalesAPI getApi(){
        return getApiServiceHandle().salesAPI();
    }
}

將平板電腦更新到最新的操作系統版本(由Samsung削弱)解決了該問題。 (仍基於Android 4.4.4)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM