Во-первых, я должен признать, что я не уверен, должен ли я использовать Windows.Web.Http.HttpClient или System.Net.Http.HttpClient.Кажется, Windows.Web.Http.HttpClient - это путь для UWP, но я попробовал оба безуспешно.
Из URL я ожидаю получить объект JSON.Когда я копирую и вставляю URL в браузер, я прекрасно вижу объект JSON.Если после подключения с помощью браузера я оставляю кэш-память в одиночку, у UWP не возникает проблем при чтении из кэша.Я использовал тот же код для подключения к https://jsonplaceholder.typicode.com/todos/1 и смог без проблем извлечь объект JSON оттуда.Вот моя основная попытка:
async void Connect()
{
using (Windows.Web.Http.HttpClient httpClient = new Windows.Web.Http.HttpClient())
{
Uri uri = new Uri(@"https://www.nottheactualdomainname.com/?api=software-api&email=xxxx@xxxx.com&licence_key=xxxx&request=status&product_id=xxxxinstance=20181218215300");
Windows.Web.Http.HttpResponseMessage httpResponse = new Windows.Web.Http.HttpResponseMessage();
string httpResponseBody = "";
try
{
httpResponse = await httpClient.GetAsync(uri);
httpResponse.EnsureSuccessStatusCode();
httpResponseBody = await httpResponse.Content.ReadAsStringAsync();
if (JsonObject.TryParse(httpResponseBody, out JsonObject keyValuePairs))
{
//handle JSON object
}
else
{
//didn't recieve JSON object
}
}
catch (Exception ex)
{
httpResponseBody = "Error: " + ex.HResult.ToString("X") + " Message: " + ex.Message;
}
}
}
Я пытался включить это в различные моменты (т. Е. Перед оператором using, непосредственно перед инициализацией httpResponse и прямо перед оператором try):
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
Также как это (зная, что я мог бы сделать это только во время отладки):
//for debugging ONLY; not safe for production
ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
Иногда я получаю эту ошибку:
Ошибка: 80131500 Сообщение: код состояния ответа неуказывают на успех: 403 ().
И иногда я получаю эту ошибку:
Ошибка: 80190193 Сообщение: запрещено (403).
Или и то, и другое.Я пробовал это как с Windows.Web.Http.HttpClient, так и с System.Net.Http.HttpClient.
В конечном итоге мне потребуется убедиться, что в моем URL-адресе указаны соответствующие учетные данные для сервера.Однако неверные учетные данные должны просто возвращать JSON с информацией об ошибке, а я этого не получаю.Я могу подключиться к https://www.nottheactualdomainname.com. Что мне проверить дальше?