Tengo un problema con una solicitud http realizada en HTTP.java.

En el escritorio, todo funciona bien (esa solicitud no se realiza porque es necesaria solo en Android).

En Android, todo funciona sin esa solicitud http.

Después de que se realiza la solicitud http, todos los demás fallan después del tiempo de espera con el error UnknownHostException, como si ya no tuvieran acceso a la conexión a Internet, incluso si está activa. Además, después de minutos y después de onResume, todas las solicitudes http fallan. Aunque la aplicación no puede obtener una respuesta http, el anuncio de AdMob aparece en mi aplicación , por lo que creo que probablemente la conexión funciona (¿o la biblioteca de AdMob almacena en caché algunos anuncios y los muestra cuando es necesario?).

A menudo, en estos casos a veces vuelve a funcionar:

  • desinstalar y reinstalar la aplicación desde Android Studio
  • cerrar la aplicación, esperar unos minutos y volver a abrirla
  • borrar datos de la aplicación del dispositivo
  • esperando una cantidad de tiempo indefinida

Después de varios intentos descubrí que tan pronto como ocurre el problema, casi todas las veces , si activo el modo avión y luego lo desactivo, la conexión de datos se desactiva y luego se reactiva, y la aplicación puede ejecutar inmediatamente todas las solicitudes http posteriores sin tener que hacer nada más en su dispositivo y sin siquiera tener que volver a abrir la aplicación.

  • probado con wifi en una red de fibra de 1GB: mismo error
  • Comprobé la conexión: es estable, en wifi y también con SIM
  • en el manifiesto está el permiso para usar Internet (de lo contrario, nunca habría funcionado)
  • Al mismo tiempo, la misma aplicación en el escritorio funciona perfectamente y a la mejor velocidad, recibiendo respuestas http en menos de 1 segundo, por lo que el servidor no es el problema.
  • Probé también con la URL https://www.google.it: mismo error, se puede acceder a la misma URL en el dispositivo a través del navegador en menos de 1 segundo
  • como en la línea .timeout(10000) Estoy usando un tiempo de espera de 10 segundos, el servidor tiene un tiempo de espera establecido en 60 segundos
  • comprobó la "calidad" de SSL del servidor en https://www.ssllabs.com/ssltest: got " A "en" Calificación general "
  • hizo el "reinicio" de SIM directamente con un operador de Vodafone

Estoy probando en un dispositivo real con una conexión 4G plana y con wifi, con la aplicación VPN instalada "NetGuard - no-root firewall".

Esta VPN funciona muy bien con todas las demás aplicaciones y probablemente también con la mía, pero no puedo descartar que sea el problema, aunque no creo que lo sea (la uso desde hace años sin problemas).

¿Hay algo mal en mi código? O al menos, ¿cómo puedo saber la causa exacta de este error?

Gracias.

AndroidLauncher.java:

@Override
protected void onCreate (Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    ...

    // Create the layout
    RelativeLayout layout = new RelativeLayout(this);

    // Do the stuff that initialize() would do for you
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);

    // Add the libGDX view
    game = new MyGame(this);
    gameView = initializeForView(game);
    layout.addView(gameView);

    // Add the AdMob view
    RelativeLayout.LayoutParams adParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
    adParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
    adParams.addRule(RelativeLayout.CENTER_HORIZONTAL);
    layout.addView(mAdView, adParams);

    layout.setKeepScreenOn(true);

    setContentView(layout);
}

MyGame.java:

public class MyGame extends Game {
    public void create() {
    
    ...

    java.security.Security.setProperty("networkaddress.cache.ttl" , "0");

    this.setScreen(new MainMenuScreen(this));
}

MainMenuScreen.java:

public MainMenuScreen(final MyGame game) {
    ... 
    
    performHttpRequest(baseUrl, getData, true, myListener);
}

HTTP.java:

public class HTTP {
    public static void performHttpRequest(String baseUrl, String q, Net.HttpResponseListener httpResponseListener) {
        HttpRequestBuilder requestBuilder = new HttpRequestBuilder();
        Net.HttpRequest httpRequest = requestBuilder.newRequest()
            .method(Net.HttpMethods.GET)
            .url(baseUrl)
            .content(q)
            .timeout(10000)
            .build();
        Gdx.net.sendHttpRequest(httpRequest, httpResponseListener);
    }
}

build.gradle (módulo android) :

...
buildTypes {
        debug {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            debuggable true
        }
    }
...

build.gradle (proyecto) :

buildscript {
    repositories {
        mavenLocal()
        mavenCentral()
        maven { url "https://plugins.gradle.org/m2/" }
        maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
        jcenter()
        google()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:4.1.1'
    }
}

allprojects {
    apply plugin: "eclipse"

    version = '1.0'
    ext {
        appName = "MyAppName"
        gdxVersion = '1.9.13'
        roboVMVersion = '2.3.8'
        box2DLightsVersion = '1.4'
        ashleyVersion = '1.7.0'
        aiVersion = '1.8.0'
    }

    repositories {
        mavenLocal()
        mavenCentral()
        jcenter()
        google()
        maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
        maven { url "https://oss.sonatype.org/content/repositories/releases/" }
    }
}

project(":desktop") {
    apply plugin: "java-library"

    dependencies {
        implementation project(":core")
        api "com.badlogicgames.gdx:gdx-backend-lwjgl:$gdxVersion"
        api "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-desktop"
        api "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-desktop"
        api "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-desktop"
        api "com.badlogicgames.gdx:gdx-bullet-platform:$gdxVersion:natives-desktop"
        api "com.badlogicgames.gdx:gdx-tools:$gdxVersion"
    }
}

project(":android") {
    apply plugin: "android"

    configurations { natives }

    dependencies {
        implementation project(":core")
        api "com.badlogicgames.gdx:gdx-backend-android:$gdxVersion"
        natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi"
        natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi-v7a"
        natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-arm64-v8a"
        natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86"
        natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86_64"
        api "com.badlogicgames.gdx:gdx-box2d:$gdxVersion"
        natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-armeabi"
        natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-armeabi-v7a"
        natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-arm64-v8a"
        natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-x86"
        natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-x86_64"
        api "com.badlogicgames.gdx:gdx-freetype:$gdxVersion"
        natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-armeabi"
        natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-armeabi-v7a"
        natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-arm64-v8a"
        natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-x86"
        natives "com.badlogicgames.gdx:gdx-freetype-platform:$gdxVersion:natives-x86_64"
        api "com.badlogicgames.gdx:gdx-bullet:$gdxVersion"
        natives "com.badlogicgames.gdx:gdx-bullet-platform:$gdxVersion:natives-armeabi"
        natives "com.badlogicgames.gdx:gdx-bullet-platform:$gdxVersion:natives-armeabi-v7a"
        natives "com.badlogicgames.gdx:gdx-bullet-platform:$gdxVersion:natives-arm64-v8a"
        natives "com.badlogicgames.gdx:gdx-bullet-platform:$gdxVersion:natives-x86"
        natives "com.badlogicgames.gdx:gdx-bullet-platform:$gdxVersion:natives-x86_64"
        implementation 'com.google.android.gms:play-services-ads:19.6.0'
        implementation 'com.google.android.gms:play-services-basement:17.5.0'
    }
}

project(":core") {
    apply plugin: "java-library"

    dependencies {
        api "com.badlogicgames.gdx:gdx:$gdxVersion"
        api "com.badlogicgames.gdx:gdx-box2d:$gdxVersion"
        api "com.badlogicgames.gdx:gdx-freetype:$gdxVersion"
        api "com.badlogicgames.gdx:gdx-bullet:$gdxVersion"
    }
}

Logcat:

I/System.out: failed to connect to myDomain.app/NN.NN.NN.NN (port 443) from /10.NN.NN.NN (port 41326) after 10000ms
W/System.err: java.net.SocketTimeoutException: failed to connect to myDomain.app/NN.NN.NN.NN (port 443) from /10.NN.NN.NN (port 41326) after 10000ms
        at libcore.io.IoBridge.connectErrno(IoBridge.java:191)
        at libcore.io.IoBridge.connect(IoBridge.java:135)
        at java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:142)
        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:390)
        at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:230)
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:212)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:436)
        at java.net.Socket.connect(Socket.java:621)
        at com.android.okhttp.internal.Platform.connectSocket(Platform.java:182)
        at com.android.okhttp.internal.io.RealConnection.connectSocket(RealConnection.java:1407)
        at com.android.okhttp.internal.io.RealConnection.connect(RealConnection.java:1359)
        at com.android.okhttp.internal.http.StreamAllocation.findConnection(StreamAllocation.java:221)
        at com.android.okhttp.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:144)
        at com.android.okhttp.internal.http.StreamAllocation.newStream(StreamAllocation.java:106)
W/System.err:     at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:400)
        at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:333)
        at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:483)
        at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:135)
        at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.connect(DelegatingHttpsURLConnection.java:90)
        at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:30)
        at com.badlogic.gdx.net.NetJavaImpl$2.run(NetJavaImpl.java:223)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:462)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:919)

(Eliminé la etiqueta libGDX porque parece relacionada con Android, porque el método solo se invoca desde la clase MainMenuScreen a través de la interfaz, pero se ejecuta en la actividad de Android)

adb logcat *:E como sugiere Always Learning en un comentario, el registro es desde la apertura de la aplicación hasta el final de la solicitud http:

cognitionService: handleMessage: event 200 value : 1
02-23 19:39:55.336  5803  5803 E libprocessgroup: set_timerslack_ns write failed: Operation not permitted
02-23 19:39:55.347  5803  5803 E libprocessgroup: set_timerslack_ns write failed: Operation not permitted
02-23 19:39:57.163  4987  5272 E ActivityTaskManager: TouchDown intent received, starting ActiveLaunch
02-23 19:39:57.205  4987  5041 E system_server: Invalid ID 0x00000000.
02-23 19:39:57.212 12157 12157 E .myAppName: Unknown bits set in runtime_flags: 0x8000
02-23 19:39:57.233  4987  5041 E DecorView: mWindow.mActivityCurrentConfig is null
02-23 19:39:57.281  4500  4613 E BufferQueueProducer: [com.sec.android.app.launcher/com.sec.android.app.launcher.activities.LauncherActivity$_5803#0] disconnect: not connected (req=1)
02-23 19:39:57.281  5803  7530 E OpenGLRenderer: ReliableSurface: perform returned an error
02-23 19:39:57.295  4987  5234 E PkgPredictorService-Collector: record changed bt=0  wifi=0 screen=0
02-23 19:39:57.932 14641 14641 E webview_servic: Not starting debugger since process cannot load the jdwp agent.
02-23 19:39:57.935  4987  5540 E PackageManager: Failed to find package; permName: android.permission.INTERNET, uid: 99774, caller: 1000
02-23 19:39:57.962 14661 14661 E ocessService0:: Not starting debugger since process cannot load the jdwp agent.
02-23 19:39:58.627  4987  5307 E WindowManager: win=Window{5a5aa90 u0 com.sec.android.app.launcher/com.sec.android.app.launcher.activities.LauncherActivity} destroySurfaces: appStopped=true win.mWindowRemovalAllowed=false win.mRemoveOnExit=false win.mViewVisibility=8 caller=com.android.server.wm.AppWindowToken.destroySurfaces:1248 com.android.server.wm.AppWindowToken.destroySurfaces:1229 com.android.server.wm.AppWindowToken.notifyAppStopped:1284 com.android.server.wm.ActivityRecord.activityStoppedLocked:2776 com.android.server.wm.ActivityTaskManagerService.activityStopped:2512 android.app.IActivityTaskManager$Stub.onTransact:2288 android.os.Binder.execTransactInternal:1056 
02-23 19:39:58.708  4459  4647 E Netd    : getNetworkForDns: getNetId from enterpriseCtrl is netid 0
02-23 19:39:58.728  4459  4647 E Netd    : getNetworkForDns: getNetId from enterpriseCtrl is netid 0
02-23 19:39:58.775  4459  4647 E Netd    : getNetworkForDns: getNetId from enterpriseCtrl is netid 0
02-23 19:39:58.923  4459  4647 E Netd    : getNetworkForDns: getNetId from enterpriseCtrl is netid 0
02-23 19:39:58.924  4459  4647 E Netd    : getNetworkForDns: getNetId from enterpriseCtrl is netid 0
02-23 19:39:58.981  4987  5041 E WindowManager: win=Window{b1dc417 u0 Splash Screen my.package.name EXITING} destroySurfaces: appStopped=false win.mWindowRemovalAllowed=true win.mRemoveOnExit=true win.mViewVisibility=0 caller=com.android.server.wm.AppWindowToken.destroySurfaces:1248 com.android.server.wm.AppWindowToken.destroySurfaces:1229 com.android.server.wm.WindowState.onExitAnimationDone:5189 com.android.server.wm.WindowStateAnimator.onAnimationFinished:320 com.android.server.wm.WindowState.onAnimationFinished:5630 com.android.server.wm.-$$Lambda$yVRF8YoeNdTa8GR1wDStVsHu8xM.run:2 com.android.server.wm.SurfaceAnimator.lambda$getFinishedCallback$0$SurfaceAnimator:100 
02-23 19:39:59.120 12157 12157 E libc    : Access denied finding property "ro.serialno"
02-23 19:39:59.354  4447  4447 E audit   : type=1400 audit(1614105599.351:37597): avc:  denied  { write } for  pid=12157 comm="Thread-12" name="perfd" dev="sda32" ino=35421 scontext=u:r:untrusted_app:s0:c112,c257,c512,c768 tcontext=u:object_r:shell_data_file:s0 tclass=dir permissive=0 SEPF_SM-M315F_10_0024 audit_filtered
02-23 19:39:59.354  4447  4447 E audit   : type=1300 audit(1614105599.351:37597): arch=c00000b7 syscall=48 success=no exit=-13 a0=ffffff9c a1=7b243f7ec1 a2=2 a3=0 items=0 ppid=4460 pid=12157 auid=... uid=10368 gid=10368 euid=10368 suid=10368 fsuid=10368 egid=10368 sgid=10368 fsgid=10368 tty=(none) ses=... comm="Thread-12" exe="/system/bin/app_process64" subj=u:r:untrusted_app:s0:c112,c257,c512,c768 key=(null)
02-23 19:39:59.354  4447  4447 E audit   : type=1327 audit(1614105599.351:37597): proctitle="my.package.name"
02-23 19:39:59.860  4459  4647 E Netd    : getNetworkForDns: getNetId from enterpriseCtrl is netid 0
02-23 19:40:00.275  4459  4647 E Netd    : getNetworkForDns: getNetId from enterpriseCtrl is netid 0
02-23 19:40:00.910 29776 14898 E memtrack: Couldn't load memtrack module
02-23 19:40:01.889  4500  4613 E BufferQueueProducer: [Toast$_12157#0] disconnect: not connected (req=1)
02-23 19:40:01.889 12157 14616 E OpenGLRenderer: ReliableSurface: perform returned an error
02-23 19:40:05.264  4987  5166 E MotionRecognitionService: handleMessage: event 200 value : 1
02-23 19:40:05.861  4459  4647 E Netd    : getNetworkForDns: getNetId from enterpriseCtrl is netid 0
02-23 19:40:06.165  4987  5049 E NotificationService: Suppressing notification from package by user request.
02-23 19:40:06.272  4459  4647 E Netd    : getNetworkForDns: getNetId from enterpriseCtrl is netid 0
02-23 19:40:09.116  4987  5043 E Watchdog: !@Sync: 19566 heap: 96 / 119 [2021-02-23 19:40:09.116] sdogWay: softdog
02-23 19:40:15.247  4987  5166 E MotionRecognitionService: handleMessage: event 200 value : 1
02-23 19:40:16.486  4459  4647 E Netd    : getNetworkForDns: getNetId from enterpriseCtrl is netid 0
02-23 19:40:16.490  4459  4647 E Netd    : getNetworkForDns: getNetId from enterpriseCtrl is netid 0
02-23 19:40:16.512  4459  4647 E Netd    : getNetworkForDns: getNetId from enterpriseCtrl is netid 0
02-23 19:40:16.533  4459  4647 E Netd    : getNetworkForDns: getNetId from enterpriseCtrl is netid 0
02-23 19:40:17.865  4459  4647 E Netd    : getNetworkForDns: getNetId from enterpriseCtrl is netid 0
02-23 19:40:18.274  4459  4647 E Netd    : getNetworkForDns: getNetId from enterpriseCtrl is netid 0
02-23 19:40:21.181  4987  5049 E NotificationService: Suppressing notification from package by user request.
02-23 19:40:25.335  4987  5166 E MotionRecognitionService: handleMessage: event 200 value : 1
02-23 19:40:30.587  4459  4647 E Netd    : getNetworkForDns: getNetId from enterpriseCtrl is netid 0
02-23 19:40:30.616 12157 12157 E Ads     : JS: Uncaught ReferenceError: OmidCreativeSession is not defined (https://googleads.g.doubleclick.net/mads/gma?caps=inlineVideo_interactiveVideo_mraid1_mraid2_mraid3_sdkVideo_exo3_th_autoplay_mediation_scroll_av_av_transparentBackground_sdkAdmobApiForAds_di_aso_sfv_dinm_dim_nav_navc_dinmo_ipdof_gls_gcache_saiMacro_xSeconds&eid=...)
02-23 19:40:30.658 12157 12157 E Ads     : JS: Uncaught ReferenceError: OmidCreativeSession is not defined (https://googleads.g.doubleclick.net/mads/gma?caps=mraid1_mraid2_mraid3_th_mediation_scroll_av_av_transparentBackground_sdkAdmobApiForAds_di_aso_dinm_dim_dinmo_ipdof_gls_saiMacro_xSeconds&eid=...)
02-23 19:40:31.277  4459  4647 E Netd    : getNetworkForDns: getNetId from enterpriseCtrl is netid 0
02-23 19:40:31.437  4459  4647 E Netd    : getNetworkForDns: getNetId from enterpriseCtrl is netid 0
02-23 19:40:35.380  4987  5166 E MotionRecognitionService: handleMessage: event 200 value : 1
02-23 19:40:36.199  4987  5049 E NotificationService: Suppressing notification from package by user request.
02-23 19:40:36.586  4459  4647 E Netd    : getNetworkForDns: getNetId from enterpriseCtrl is netid 0
02-23 19:40:37.279  4459  4647 E Netd    : getNetworkForDns: getNetId from enterpriseCtrl is netid 0
02-23 19:40:37.443  4459  4647 E Netd    : getNetworkForDns: getNetId from enterpriseCtrl is netid 0
02-23 19:40:39.129  4987  5043 E Watchdog: !@Sync: 19567 heap: 87 / 110 [2021-02-23 19:40:39.129] sdogWay: softdog

Editar 1 --------------------------------------------- ------------ :

Acabo de realizar el "reinicio" de la SIM directamente con un operador de Vodafone, por lo que ahora debería excluir un problema de SIM.

Alguna información mientras la solicitud http falla en MainMenuScreen pero se muestra el anuncio de AdMod y también todo funciona bien en Firefox:

activeNetwork.toString()           = 601
activeNetwork.describeContents()   = 0
activeNetworkInfo.getReason()      = null
activeNetworkInfo.getType()        = 0
activeNetworkInfo.getTypeName()    = MOBILE
activeNetworkInfo.getSubtype()     = 13
activeNetworkInfo.getSubtypeName() = LTE
activeNetworkInfo.getExtraInfo()   = mobile.vodafone.it
activeNetworkInfo.toString()       = [
    type:        MOBILE[LTE]
    , state:     CONNECTED/CONNECTED
    , reason:    (unspecified)
    , extra:     mobile.vodafone.it
    , failover:  false
    , available: true
    , roaming:   false
]

Los errores:

W/System.err: java.net.SocketTimeoutException: SSL handshake timed out
W/System.err:     at com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(Native Method)
        at com.android.org.conscrypt.NativeSsl.doHandshake(NativeSsl.java:387)
        at com.android.org.conscrypt.ConscryptFileDescriptorSocket.startHandshake(ConscryptFileDescriptorSocket.java:234)
        at com.android.okhttp.internal.io.RealConnection.connectTls(RealConnection.java:1471)
        at com.android.okhttp.internal.io.RealConnection.connectSocket(RealConnection.java:1415)
        at com.android.okhttp.internal.io.RealConnection.connect(RealConnection.java:1359)
        at com.android.okhttp.internal.http.StreamAllocation.findConnection(StreamAllocation.java:221)
        at com.android.okhttp.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:144)
        at com.android.okhttp.internal.http.StreamAllocation.newStream(StreamAllocation.java:106)
        at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:400)
        at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:333)
        at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:483)
W/System.err:     at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:135)
        at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.connect(DelegatingHttpsURLConnection.java:90)
        at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:30)
        at com.badlogic.gdx.net.NetJavaImpl$2.run(NetJavaImpl.java:223)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:462)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:919)

W/System.err: javax.net.ssl.SSLHandshakeException: SSL handshake aborted: ssl=0x7021beca08: I/O error during system call, Connection reset by peer
        at com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(Native Method)
W/System.err:     at com.android.org.conscrypt.NativeSsl.doHandshake(NativeSsl.java:387)
        at com.android.org.conscrypt.ConscryptFileDescriptorSocket.startHandshake(ConscryptFileDescriptorSocket.java:234)
        at com.android.okhttp.internal.io.RealConnection.connectTls(RealConnection.java:1471)
        at com.android.okhttp.internal.io.RealConnection.connectSocket(RealConnection.java:1415)
        at com.android.okhttp.internal.io.RealConnection.connect(RealConnection.java:1359)
        at com.android.okhttp.internal.http.StreamAllocation.findConnection(StreamAllocation.java:221)
        at com.android.okhttp.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:144)
        at com.android.okhttp.internal.http.StreamAllocation.newStream(StreamAllocation.java:106)
        at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:400)
        at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:333)
        at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:483)
        at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:135)
        at com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.connect(DelegatingHttpsURLConnection.java:90)
        at com.android.okhttp.internal.huc.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:30)
        at com.badlogic.gdx.net.NetJavaImpl$2.run(NetJavaImpl.java:223)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:462)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
        at java.lang.Thread.run(Thread.java:919)

Mi solución :

Desinstale la aplicación VPN.

Fue una solución tan simple ... No me hubiera imaginado que fuera culpa de la aplicación por la VPN, lo consideré infalible haberlo usado durante más de 3 años ...

Si este no hubiera sido el problema, sus sugerencias sin duda habrían sido útiles y probablemente decisivas, ¡gracias a todos! (Desafortunadamente, no puedo dar la recompensa de recompensa a varios usuarios a propósito, pero puedo votar tu respuesta)

12
user2342558 21 feb. 2021 a las 17:24

3 respuestas

La mejor respuesta

Ese error puede estar relacionado con la conexión VPN, cierre la aplicación, apague VNP si estaba conectado, vuelva a conectarse a VPN y reinicie su aplicación.

En todo caso, debes estar conectado a la VPN antes de abrir la aplicación.

1
leo 2 mar. 2021 a las 03:51

UnknownHostException significa que no pudo resolver el nombre de host. Esto es normal (de vez en cuando) con conexiones de red lentas o inestables. Sin embargo, Java es agresivo al almacenar en caché las respuestas de DNS. La razón por la que no funciona hasta que reinstala la aplicación es que la respuesta de DNS incorrecta se almacenó en caché, por lo que todas las llamadas posteriores fallan. Cambiar el ttl de la caché de DNS en su aplicación java debería solucionarlo:

 networkaddress.cache.ttl = 0
 networkaddress.cache.negative.ttl = 0

En este caso, es la configuración negativa.ttl que desea; las búsquedas posteriores se omitirán hasta que haya transcurrido ese tiempo. Pero es una buena idea establecer ambas propiedades en valores bajos.

Más detalles aquí: ¿Cómo hacer que Java respete el tiempo de espera de almacenamiento en caché de DNS?

2
Nicholas Rees 2 mar. 2021 a las 13:07

No sé exactamente cómo hace la solicitud. Pero parece que simplemente lo llamas desde el hilo principal que puede ser bloqueado por Android. Tal vez cree un hilo separado para él. O si es una pequeña solicitud, simplemente agregue a la Actividad:

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
1
Christian Lettermann 9 mar. 2021 a las 11:20