![](/img/trans.png)
[英]How do I programmatically compile a C# Windows Forms App from a richtextbox? C#
[英]How do i get data from a web api into a c# windows forms app class
我正在嘗試以 Windows 形式制作一個程序,該程序可以通過 Web api 搜索電影和連續劇。 然后,程序需要將所有相關信息顯示到表單上。
我遇到了讓程序從 web api 讀取的問題。 經過大量的搜索,我決定把它放在這里。
我有一些主要基於本文的代碼: https : //docs.microsoft.com/en-us/aspnet/web-api/overview/advanced/calling-a-web-api-from-a-net-客戶
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new App());
}
static HttpClient client = new HttpClient();
static async Task RunAsync()
{
// Update port # in the following line.
client.BaseAddress = new Uri("http://www.omdbapi.com/?apikey=caa4fbc9&t=it");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
}
static async Task<Film> GetFilmAsync(string path)
{
Film film = null;
HttpResponseMessage response = await client.GetAsync(path);
if (response.IsSuccessStatusCode)
{
film = await response.Content.ReadAsAsync<Film>();
}
return film;
}
}
可悲的是,它沒有做太多事情,我也不知道下一步該做什么。 所以正如我所說,這應該從 web api( http://www.omdbapi.com/ )讀取數據。 然后它必須將選定的項目放入一個類中,然后我可以用它來組成表單。
public class Film
{
public string Title { get; set; }
public string Released { get; set; }
public string Runtime { get; set; }
public string Genre { get; set; }
public string Director { get; set; }
public string Actors { get; set; }
public string Plot { get; set; }
public string Language { get; set; }
public string imdbRating { get; set; }
public string totalSeasons { get; set; }
public string Type { get; set; }
}
我希望任何人都可以提供幫助! 任何東西都值得贊賞!
我對您的代碼進行了一些更改,它似乎運行良好:
async void Main()
{
await InitClient();
// Pass the file title to the API
var result = await GetFilmAsync("it");
client.CancelPendingRequests();
client.Dispose();
}
// Changed name to be more meaningful
static async Task InitClient()
{
// Remove the part with your key and the film title from the general initialization
client.BaseAddress = new Uri("http://www.omdbapi.com/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
}
static async Task<Film> GetFilmAsync(string title)
{
Film film = null;
// Compose the path adding the key and the film title
string path = "?apikey=caa4fbc9&t=" + title;
HttpResponseMessage response = await client.GetAsync(path);
if (response.IsSuccessStatusCode)
{
string data = await response.Content.ReadAsStringAsync();
// This is the key point, the API returns a JSON string
// You need to convert it to your Film object.
// In this example I have used the very useful JSon.NET library
// that you can easily install with NuGet.
film = JsonConvert.DeserializeObject<Film>(data);
}
return film;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.