В браузере я могу получить такие данные (в формате JSON)
Это означает, что вы делаете вызов HttpGet
без параметров, как я вижу изURL и в любом случае нет HttpBody.Для любого другого вызова, такого как HttpPost, вы должны использовать такой инструмент, как Postman, Fiddler
Ниже приведен простой код для вызова Http Get с использованием C #:
// Create HttpClient
var client = new HttpClient { BaseAddress = new Uri("http://localhost:8888/") };
// Assign default header (Json Serialization)
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(ApiConstant.JsonHeader));
// Make an API call and receive HttpResponseMessage
var responseMessage = await client.GetAsync("PersonList", HttpCompletionOption.ResponseContentRead);
// Convert the HttpResponseMessage to string
var resultArray = await result.Content.ReadAsStringAsync();
// Deserialize the Json string into type using JsonConvert
var personList = JsonConvert.DeserializeObject<List<Person>>(resultArray);
Как это работает
HttpClient
- это объект, который охватывает адрес службы API - Мы гарантируем, что назначенный заголовок имеет тип Json для сериализации / связи
- Выполнение асинхронного вызова по протоколу Http
HttpResponseMessage
используется для извлечения строки, десериализованной в List<Person>
с помощью NewtonSoft Json
Обратите внимание Async
вызов означает, что охватывающий метод должен быть Async
Ожидаемая схема для Person
класса для заполнения List<Person>
с использованием десериализации:
public class Person
{
public int id {get;set;}
public string Name {get;set;}
public int age {get;set;}
}
Где вызвать код - Winform / Добавить новый класс
Стандартным механизмом будет создание универсальной вспомогательной библиотеки / класса, из которого будут выполнены все вызовы API, получены результаты,winform просто выполняет привязку данных, а не процессКод