c# Клиент API с использованием настольного приложения - PullRequest
0 голосов
/ 02 августа 2020

Мне нужно создать клиентское приложение для подключения к API для публикации и получения информации, информация, которую я получил от компании, у которой есть API:

API details for: xxxxx 
Integration: yyyyxxxx 
API URL: https://api.xyz.us/v123/ 
APP KEY: xxxxx12312xxxxx2123123xxxxx 
SECRET KEY: 11111111111111111xxxxxxxxxxx 

Я хочу использовать c# или другой язык для создания клиента, я не смог найти образец c# для рабочего стола application, я нашел образец c# console basi c. Это похоже на то, что никто не использует API с c#,

. Есть ли какой-либо образец для подключения клиента к API с использованием C# настольного приложения ?

или что я могу использовать для выполнения sh этой задачи?

Спасибо

Ответы [ 2 ]

0 голосов
/ 03 августа 2020

Вот пример HttpClient на основе фрагмента из ответа OP

using System.Threading.Tasks;
using System.Net.Http;
using System.Text;
using System.Net.Http.Headers;
public class RESTClient
{
    private readonly HttpClient client = new HttpClient();

    public RESTClient(string baseAddress)
    {
        client.BaseAddress = new Uri(baseAddress);
    }

    public void SetAuthHeader(string parameter)
    {
        client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", parameter);
    }

    public async Task<string> MakeRequestAsync(HttpMethod method, string path, string postContent = "")
    {
        try
        {
            using (HttpContent content = new StringContent(postContent, Encoding.UTF8, "application/json"))
            using (HttpRequestMessage request = new HttpRequestMessage(method, path))
            {
                if (method == HttpMethod.Post || method == HttpMethod.Put) request.Content = content;
                using (HttpResponseMessage response = await client.SendAsync(request, HttpCompletionOption.ResponseHeadersRead).ConfigureAwait(false))
                {
                    response.EnsureSuccessStatusCode();
                    return await response.Content.ReadAsStringAsync().ConfigureAwait(false);
                }
            }
        }
        catch (Exception ex)
        {
            return "{\"errorMessages\":[\"" + ex.Message + "\"],\"errors\":{}}";
        }
    }
}

Пример использования (WinForms)

private RESTClient restClient;
private void Form1_Load(object sender, EventArgs e)
{
    restClient = new RESTClient("https://myapi.url/api");
    restClient.SetAuthHeader("iODA0NjMxMTgwMWUzYWFkYTk4NjM2MjcyOTk3MDowYTU0N2I2NzliNWRkMjliN2I4NTFlMDBkY2Y2NjQzNzQ5OTIxYzZl");
}

private async void button1_Click(object sender, EventArgs e)
{
    // GET
    string getJsonResult = await restClient.MakeRequestAsync(HttpMethod.Get, "path/to/method");

    // POST
    string postJsonResult = await restClient.MakeRequestAsync(HttpMethod.Post, "path/to/method", "{\"data\": \"Some Request Data\"}");


    // process data here
}
0 голосов
/ 03 августа 2020

Спасибо всем, кто помогает. Я нашел ответ в Postman, сначала я нашел образец настольного клиентского приложения C#. проблема с этим образцом в том, что он не использовал ключ API и секретный ключ. Я нашел много ответов о том, как добавить ключ API и секретный ключ

, но сработал тот, который был на Postman, в разделе 'code'

request.Headers ["Авторизация"] = "Basi c ZmRiODA0NjMxMTgwMWUzYWFkYTk4NjM2MjcyOTk3MDowYTU0N2I2NzliNWRkMjliN2I4NTFlMDBkY2Y2NjQzNzQ5OTIxYz *: * 10011 * полный код *: * 10011

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