當我為 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/";
}
}
我能做些什么來修復這個錯誤?
uj5u.com熱心網友回復:
如果您的網站沒有任何證書配置,請更改
https為http.設定為允許 http 請求。
添加你的 xxx.Android->Properties->AndroidManifest.xml:
android:usesCleartextTraffic="true"。如果上述方法不起作用,請在您的 Resources 檔案夾下創建一個 xml 檔案夾并添加 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"
uj5u.com熱心網友回復:
如果你想使用http請求,你應該添加android:usesCleartextTraffic="true"到AndroidManifest.xml中的應用程式標簽中,該標簽僅用于API級別23及更高級別(這足以進行測驗)。您應該在線使用 https 請求,您需要一個域名并且 https 將在您的服務器中使用 443 埠。通常,您需要 Nginx 或 Apache 來偵聽 443 并連接您的自我服務器。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/371238.html
上一篇:Xamarin5.0創建啟影片面
