【问题标题】:Android http client fails to connect over timeAndroid http客户端超时连接失败
【发布时间】:2019-06-06 08:04:43
【问题描述】:

我的 xamarin android 应用程序有问题。假设它每 5 分钟向服务器发送一次请求,经过 40-50 分钟后它会失败。

我使用 xamarin 的互联网连接插件来监听互联网断开连接,但它没有触发。

这里是异常堆栈跟踪:

failed to connect to  from  after 120000ms
  at Java.Interop.JniEnvironment+InstanceMethods.CallVoidMethod (Java.Interop.JniObjectReference instance, Java.Interop.JniMethodInfo method, Java.Interop.JniArgumentValue* args) [0x00069] in <286213b9e14c442ba8d8d94cc9dbec8e>:0 
  at Java.Interop.JniPeerMembers+JniInstanceMethods.InvokeAbstractVoidMethod (System.String encodedMember, Java.Interop.IJavaPeerable self, Java.Interop.JniArgumentValue* parameters) [0x00014] in <286213b9e14c442ba8d8d94cc9dbec8e>:0 
  at Java.Net.HttpURLConnectionInvoker.Connect () [0x0000a] in <95d915721ad748108ff096dce8f8f32c>:0 
  at Xamarin.Android.Net.AndroidClientHandler+<>c__DisplayClass43_0.<ConnectAsync>b__0 () [0x0005a] in <95d915721ad748108ff096dce8f8f32c>:0 
  at System.Threading.Tasks.Task.InnerInvoke () [0x0000f] in <d4a23bbd2f544c30a48c44dd622ce09f>:0 
  at System.Threading.Tasks.Task.Execute () [0x00000] in <d4a23bbd2f544c30a48c44dd622ce09f>:0 
--- End of stack trace from previous location where exception was thrown ---
  at Xamarin.Android.Net.AndroidClientHandler+<DoProcessRequest>d__45.MoveNext () [0x0012e] in <95d915721ad748108ff096dce8f8f32c>:0 
--- End of stack trace from previous location where exception was thrown ---
  at Xamarin.Android.Net.AndroidClientHandler+<SendAsync>d__40.MoveNext () [0x00230] in <95d915721ad748108ff096dce8f8f32c>:0 
--- End of stack trace from previous location where exception was thrown ---
  at System.Net.Http.HttpClient+<SendAsyncWorker>d__49.MoveNext () [0x000ca] in <25ebe1083eaf4329b5adfdd5bbb7aa57>:0 
--- End of stack trace from previous location where exception was thrown ---
  at MyProject.Services.Helpers.HttpHelper+<GetAsync>d__20.MoveNext () [0x00066] in <a7ae1820966b4814b52c3da64fea6a88>:0 
--- End of stack trace from previous location where exception was thrown ---
  at MyProject.Services.Helpers.HttpHelper+<ExecuteGetAsync>d__14.MoveNext () [0x000f0] in <a7ae1820966b4814b52c3da64fea6a88>:0 
--- End of stack trace from previous location where exception was thrown ---
  at MyProject.Services.Helpers.HttpHelper+<Get>d__8`1[T].MoveNext () [0x00075] in <a7ae1820966b4814b52c3da64fea6a88>:0 
--- End of stack trace from previous location where exception was thrown ---
  at MyProject.Services.Providers.AuthenticationProvider+<IsTwoFactorAuthenticationEnabled>d__2.MoveNext () [0x00077] in <a7ae1820966b4814b52c3da64fea6a88>:0 
--- End of stack trace from previous location where exception was thrown ---
  at MyProject.Services.Services.AuthenticationService+<IsTwoFactorAuthenticationEnabled>d__7.MoveNext () [0x0006d] in <a7ae1820966b4814b52c3da64fea6a88>:0 
--- End of stack trace from previous location where exception was thrown ---
  at MyProject.Core.ViewModels.Base.BaseViewModel+<Execute>d__25`1[TOut].MoveNext () [0x000a2] in <8cda1c2cffb84419929f531e828b43bf>:0 
  --- End of managed Java.Net.SocketTimeoutException stack trace ---
java.net.SocketTimeoutException: failed to connect to   after 120000ms
        at libcore.io.IoBridge.connectErrno(IoBridge.java:185)
        at libcore.io.IoBridge.connect(IoBridge.java:130)
        at java.net.PlainSocketImpl.socketConnect(PlainSocketImpl.java:129)
        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:357)
        at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:201)
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:183)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:356)
        at java.net.Socket.connect(Socket.java:616)
        at com.android.okhttp.internal.Platform.connectSocket(Platform.java:145)
        at com.android.okhttp.internal.io.RealConnection.connectSocket(RealConnection.java:141)
        at com.android.okhttp.internal.io.RealConnection.connect(RealConnection.java:112)
        at com.android.okhttp.internal.http.StreamAllocation.findConnection(StreamAllocation.java:184)
        at com.android.okhttp.internal.http.StreamAllocation.findHealthyConnection(StreamAllocation.java:126)
        at com.android.okhttp.internal.http.StreamAllocation.newStream(StreamAllocation.java:95)
        at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:281)
        at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:224)
        at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:461)
        at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:127)

【问题讨论】:

    标签: android http xamarin https httpclient


    【解决方案1】:

    您可以尝试以下步骤来查找问题:

    1.检查是否可以通过URL直接连接,使用任何浏览器而不是Android应用程序。

    2.如果失败,则可能是网络连接问题而不是android代码。

    3.然后检查手机和电脑是否连接到同一个网络

    4.网络连接失败的原因之一是“防火墙”选项,它可能会阻塞连接请求。

    检查后,您可以尝试通过代码连接,也可以直接通过浏览器连接。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多