Member 13716754 Ответов: 1

Вызов rest api в c#.


The following code works for basic authentication.


публичная асинхронная задача RunAsync(строковое имя, строковое значение)
{
using (var handler = new HttpClientHandler { UseDefaultCredentials = true })
using (var client = new HttpClient(handler))
{
var byteArray = кодировка.ASCII.GetBytes("имя пользователя:пароль");
клиент.DefaultRequestHeaders.Разрешение = новая система.Нет.Протоколу HTTP.Заголовки.AuthenticationHeaderValue("Базовый", "Преобразовать".ToBase64String(byteArray));
ВАР urlRestGet = HomeController.URL-адрес;
клиент.Базовый адрес = новый URI(urlRestGet + "?имя=" + имя + "&амп;значение=" + значение + "");
клиент.DefaultRequestHeaders.Принимать.Четкий();
**1. если(HomeController.сбой передачи.ToLower()=="xml"){
клиент.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/xml"));
}**

остальное, если (HomeController.сбой передачи.ToLower() == "json")
{
клиент.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
}

HttpResponseMessage response = ожидание клиента.GetAsync(urlRestGet + "?name=" + name + "&value=" + value + "");

если (ответ.IsSuccessStatusCode)
{
//Получить ответ
loginJsonString = ожидание ответа.Содержание.ReadAsStringAsync();

//Преобразование в xml
using (var stream = new MemoryStream(Encoding.ASCII.Метод getbytes(loginJsonString)))
{
var output = new XmlDictionaryReaderQuotas();
xmlResult = XDocument.Load(JsonReaderWriterFactory.CreateJsonReader(поток, вывод)).Метод toString();
}
}
}
}

Что я уже пробовал:

1) If the content type is application/xml am I correct to use line 1 part in the code.

2) How can I make this code more generic. (when the authentication type is different eg: tokenized or cookiebased how can I change this.)

1 Ответов

Рейтинг:
1

nicolae1992

У меня нет такого большого опыта работы с rest API, но я сделал один проект для windows phone и Вызов веб-API из клиента .NET (C#) | Microsoft Docs[^] черт меня побери, очень моуч!