Chu*_*cky 6 android httpclient xamarin .net-standard
我一直在用这个挠头一段时间。我正在 Xamarin 中构建一个 Android 应用程序,我有一个登录 POST 请求,该请求大部分都有效,但偶尔会收到此错误。我通知用户并告诉他们再试一次,但我仍然经常收到错误并希望修复它,以便应用程序提供更流畅的体验。
这是我登录 App Center 的堆栈跟踪:
LoginProvider+d__1.MoveNext () C:\source\repos{MyApp}{MyApp}{MyApp}\Services\LoginProvider.cs:35
java.io.IOException: unexpected end of stream on Connection{testclarity.i-menzies.com:443, proxy=DIRECT@ hostAddress=62.244.173.166 cipherSuite=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 protocol=http/1.1} (recycle count=0)
com.android.okhttp.internal.http.HttpConnection.readResponse(HttpConnection.java:210)
com.android.okhttp.internal.http.HttpTransport.readResponseHeaders(HttpTransport.java:80)
com.android.okhttp.internal.http.HttpEngine.readNetworkResponse(HttpEngine.java:905)
com.android.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:789)
com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:443)
com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:388)
com.android.okhttp.internal.huc.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:501)
com.android.okhttp.internal.huc.DelegatingHttpsURLConnection.getResponseCode(DelegatingHttpsURLConnection.java:105)
com.android.okhttp.internal.huc.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:25)
Caused by: java.io.EOFException: \n not found: size=0 content=...
com.android.okhttp.okio.RealBufferedSource.readUtf8LineStrict(RealBufferedSource.java:200)
com.android.okhttp.internal.http.HttpConnection.readResponse(HttpConnection.java:191)
Run Code Online (Sandbox Code Playgroud)
我正在使用 .NETStandard 2.0 和 Xamarin Forms 3.2.0.871581。
我搜索了 Google 的大部分内容,发现这是各种 Android 库的问题,尤其是 OkHttp(我在堆栈跟踪中提到的那个)。我曾尝试调查 Github 上的 .NETStandard 源代码以确定可能的原因,但我发现该项目很难导航,尤其是这个问题似乎是 Android 特有的。任何有关寻找正确来源的建议都是理想的。
我根据互联网的建议尝试过的事情:
这些似乎是网上流行的建议之一,其中一些对人们有用,有些则不适用。
另一个常见的建议是将 OkHttp 库的配置设置为 OkHTTP.setRetryOnConnectionFailure(true),这显然解决了很多人的问题,如此处所建议的:https : //github.com/square/okhttp/issues/1517#issuecomment-144069139。
此外,这里的 Xamarin.Android 似乎也提交了一个类似的错误:https ://bugzilla.xamarin.com/show_bug.cgi ? id = 41100 。但这已被标记为固定。我不确定这是否会影响我的 Xamarin Forms 项目。
有谁知道我如何解决这个问题,或者我可以如何进一步调查我已经尝试过的问题?
按照此链接中的信息后:https://learn.microsoft.com/en-us/xamarin/android/app-fundamentals/http-stack ?tabs=macos
并将我的 HTTPHandler 更改为本机 android 处理程序:
Xamarin.Android HttpClient 配置位于“项目选项”>“Android 选项”中,然后单击“高级选项”按钮。
以下是 TLS 1.2 支持的推荐设置:
Visual Studio Android 选项
我错过的一点是:
项目必须引用 System.Net.Http 程序集。
确保您的项目引用System.Net.Http否则它仍将使用 OKHttp
| 归档时间: |
|
| 查看次数: |
7984 次 |
| 最近记录: |