如何在 .NET 中使用 OpenSSL 密钥和 CSR 文件调用 SOAP API?

问题描述 投票:0回答:0

我正在尝试调用我们供应商之一的 SOAP API。我们被要求使用 OpenSSL 生成密钥和 CSR 文件,并将生成的 CSR 文件提供给供应商。然后供应商将生成证书并将其发回给我们。然后我们将使用该证书来调用 SOAP API。到目前为止,我还没有找到任何关于如何使用 HttpClient 在 .NET 中使用密钥和 CSR 文件的文档。我找到了一个包 https://restsharp.dev/ 可用于将密钥和 CSR 文件附加到请求,但我不确定如何使用密钥文件的密码。我也不确定这是否是在 .NET 中调用 SOAP API 的正确方法

这是我目前的代码,

using RestSharp;

Console.WriteLine("Hello, World!");

string BASE_URL = "https://api.xxxxx.com.au";

string API_CLIENT_KEYFILE = Path.Combine(Directory.GetCurrentDirectory(),"myfolder", "xxx.key");
if (!File.Exists(API_CLIENT_KEYFILE))
{
    Console.WriteLine("File not found: " + API_CLIENT_KEYFILE);
    return;
}

string API_CLIENT_SIGNED_CERTFILE = Path.Combine(Directory.GetCurrentDirectory(),"myfolder", "xxx.crt");
if (!File.Exists(API_CLIENT_SIGNED_CERTFILE))
{
    Console.WriteLine("File not found: " + API_CLIENT_SIGNED_CERTFILE);
    return;
}

string API_ENDPOINT = "xxx.xxx_in.customer";
string API_VERSION = "1.0";

// Building api url
string RESOURCE = "/API/" + API_ENDPOINT.Replace('.', '/') + '/' + API_VERSION + "/index.php?wsdl";

var client = new RestClient(BASE_URL);

// Create a new request
var request = new RestRequest(RESOURCE, Method.Post);

// Add our keyfile and signed certfile to the request
request.AddFile("API_CLIENT_KEYFILE", API_CLIENT_KEYFILE);
request.AddFile("API_CLIENT_CERTFILE", API_CLIENT_SIGNED_CERTFILE);

// Call the netsip api
var response = client.Execute(request);

// Process the response
if (response.StatusCode == System.Net.HttpStatusCode.OK)
{
    // Success!
    Console.WriteLine("Call successful!");
    Console.WriteLine(response.Content);
}
else
{
    // Error occurred
    Console.WriteLine("Error occurred: " + response.StatusDescription);
}

当我执行此操作时,我得到 401 Unauthorized,我认为这是因为我缺少密码短语但我不知道在哪里添加它。我在包文档中找不到它。

任何帮助将不胜感激。

c# .net soap dotnet-httpclient restsharp
© www.soinside.com 2019 - 2024. All rights reserved.