Создание HTTP-запроса в VBA из C# документации с паролем SHA256 - PullRequest
0 голосов
/ 26 марта 2020

Я немного перегружен этим.

Я сделал небольшое приложение MS Access, которое за три недели быстро росло, и у меня был запрос к API вызвать другое программное обеспечение. Поставщик другой компании предоставил информацию об этом, но она находится в C#, и я не могу понять, как это сделать в VBA.

У меня есть ряд других HTTP-вызовов к онлайн-API, но ничего к сетевому компьютеру, а все остальные имеют информацию о cURL, которую я преобразовал в VBA с помощью справки по переполнению стека.

Итак, есть раздел SHA256 для генерации пароля:

private static string EncodeStringSha256Hash(string text)
{
using (var sha = new System.Security.Cryptography.SHA256Managed())
{
byte[] textData = System.Text.Encoding.UTF8.GetBytes(text);
byte[] hash = sha.ComputeHash(textData);
return BitConverter.ToString(hash).Replace("-", String.Empty);
}
}

Для этого В этом видео я пытаюсь использовать код (он длинный, но он там). Создание ha sh работает, но будет ли это уместным для вышеописанного?

Я вижу, что оно основано на SHA256Managed, но я не знал об этом бите:

BitConverter.ToString(hash).Replace("-", String.Empty); 

Наконец, документация показывает этот пример:

GET: /API/CLIENT

using System;
using System.Web;
            var url = "localhost";


            var userName = "stackoverflow"
            var password = EncodeStringSha256Hash(DateTime.UtcNow.ToString("ddMMyyyy"));

            var port = 8800;

            var methodUrl = $"http://{url}:{port}/Api/Login/user";
            var parameters = new Dictionary<string, string>
            {
                {"username", userName},
                {"password", password}
            };

            var content = new FormUrlEncodedContent(parameters);

            var response = await new HttpClient().PostAsync(methodUrl, content);

            var responseString = await response.Content.ReadAsStringAsync();

Вот где я застрял. У меня их программное обеспечение работает на виртуальной машине HyperV, которая находится в моей сети, и я «вижу» ее в своей сети. \\windev2001eval работает, если я хочу go через проводник в общие папки

Я также использовал приведенный ниже синтаксис для других моих HTTP-запросов:

Set httpReq = CreateObject("MSXML2.ServerXMLHTTP")
httpReq.Open "GET", URL, False
httpReq.setRequestHeader "username", username
httpReq.setRequestHeader "password", password

httpReq.send
strResponse = httpReq.responseText
Debug.Print strResponse

Это ничего не возвращает, используя "http://windev2001eval: 8800 / API / Login / " в качестве моего URL. Во всяком случае, это далеко, как я получаю. Что я могу попробовать дальше?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...