发生一个或多个错误。 (无法解析 TLS 数据包头)C# Xamarin Android Project Visual Studio

Posted

技术标签:

【中文标题】发生一个或多个错误。 (无法解析 TLS 数据包头)C# Xamarin Android Project Visual Studio【英文标题】:One or more errors occurred. (Unable to parse TLS packet header) C# Xamarin Android Project Visual Studio 【发布时间】:2021-11-26 18:30:54 【问题描述】:

当我为 API 服务器使用 http url 时,我收到错误:

    Message "One or more errors occurred. (Cleartext HTTP traffic to 194.141.118.43 not permitted)" 

当我将 https 放在 API 服务器的 url 上时,我收到错误:

    Message "One or more errors occurred. (Unable to parse TLS packet header)"  

我的RestServiceData 类看起来像:

    using System;
using System.Diagnostics;
using System.Net.Http;
using System.Threading.Tasks;
using MaritsaTundzhaForecast.Models;
using Newtonsoft.Json;

namespace MaritsaTundzhaForecast.Services

    public class RestServiceData
    
        HttpClient _client1;

        HttpClient _client2;

        public RestServiceData()
        
            _client1 = new HttpClient();

            _client2 = new HttpClient();
        

        public WaterBindingData GetWaterDataForecast(string query, string query2)
        
            WaterDataJson waterData = new WaterDataJson();
            WaterStationsJson waterStations = new WaterStationsJson();

            WaterBindingData result = new WaterBindingData();
            try
            

                var task = Task.Run(() => _client1.GetAsync(query));
                task.Wait();
                var response = task.Result;

                var task2 = Task.Run(() => _client2.GetAsync(query2));
                task2.Wait();
                var response2 = task2.Result;


                if (response.IsSuccessStatusCode && response2.IsSuccessStatusCode)
                
                    var content = response.Content.ReadAsStringAsync().Result;
                    var content2 = response2.Content.ReadAsStringAsync().Result;

                    var json = content2.Replace("\"ardaforecast\":[[", "\"ardaforecast\":[ \"items\": [")
                                                 .Replace("],\"fieldCount\"", "],\"details\":\"fieldCount\"")
                                                 .Replace("]", "]");
                    waterData = JsonConvert.DeserializeObject<WaterDataJson>(content2);


                    waterStations = JsonConvert.DeserializeObject<WaterStationsJson>(content);

                    result.WaterData = waterData;
                    result.WaterStation = waterStations;
                
            
            catch (Exception ex)
            
                Debug.WriteLine("\t\tERROR 0", ex.Message);
            

            return result;
        
    

这是我的Constants 班级:

    using System;
using System.IO;

namespace MaritsaTundzhaForecast

    public static class Constants
    
        public static string EndPoint = "https://194.141.118.43:3001/";
    

我可以做些什么来修复这个错误?

【问题讨论】:

您没有有效的 SSL 设置。只需在浏览器中加载您的 url 就会显示 SSL 错误。有许多在线工具可以检查您的 SSL 配置。或者,您可以按照 previous question 中的建议启用 UsesCleartextTraffic 【参考方案1】:

    如果您的网站没有任何证书配置,请将https 更改为http

    设置为允许 http 请求。

    添加你的 xxx.android->Properties->AndroidManifest.xml:android:usesCleartextTraffic="true".

    如果上面的方法不行,在你的下创建一个xml文件夹 Resources 文件夹并添加 network_security_config.xml 文件。添加 代码:

    <?xml version="1.0" encoding="utf-8"?>
    <network-security-config>
        <base-config cleartextTrafficPermitted="true"/>
    </network-security-config> 
    

    添加你的 xxx.Android->Properties->AndroidManifest.xml:

    android:networkSecurityConfig="@xml/network_security_config"
    

【讨论】:

【参考方案2】:

如果你想使用http请求,你应该将android:usesCleartextTraffic="true"添加到AndroidManifest.xml中的应用程序标签中,该标签仅用于API level 23及更高级别(这足以测试)。 您应该在线使用 https 请求,您需要一个域名,并且 https 将在您的服务器中使用 443 端口。通常,您需要 nginx 或 Apache 来监听 443 并连接您自己的服务器。

【讨论】:

以上是关于发生一个或多个错误。 (无法解析 TLS 数据包头)C# Xamarin Android Project Visual Studio的主要内容,如果未能解决你的问题,请参考以下文章

MatLab 错误:无法使用静态 TLS 打开

node-telegram-bot-api 中的错误未找到模块:无法解析 node-telegram-bot-api 中的“fs”、“net”、“tls”

PS流格式解析

状态:400 标题:“发生一个或多个验证错误。”

无法从Dropbox下载文件,因为无法通过C#中的WebClient与SSL / TLS通道连接

无法创建 SSL/TLS 安全通道。安全通道故障