ASP.NET MVC 5 getting a JSON result from TMDB API



如何让用户在ASP.NET MVC 5应用程序中使用TMDB API(电影DB)搜索电影并返回JSON结果。

使用我的Personel API键在VB外工作示例,并在所有电影中都返回JSON结果,其中包含字符串" Mission":

http://api.themoviedb.org/3/search/movie?api_key=841c..&query=mission

文档(http://docs.themoviedb.apiary.io/#reference/search/searchmovie)建议将以下代码用于C#:

var baseAddress = new Uri("http://api.themoviedb.org/3/");
using (var httpClient = new HttpClient{ BaseAddress = baseAddress })
{
    httpClient.DefaultRequestHeaders.TryAddWithoutValidation("accept", "application/json");
    using(var response = await httpClient.GetAsync("search/movie"))
    {
        string responseData = await response.Content.ReadAsStringAsync();
    }
}

我将代码粘贴到异步动作Movieearch()中,但现在该怎么做。

您必须对json字符串进行验证,它们以 responseData的形式返回您,例如 Movie。对于避难所化,您可以使用json.net之类的库,然后像这样写这样的库:

class Movie
{
   public string Name{ get; set;}
   public decimal Rating{ get; set;}
}
 string output = "{ "Name": "The Matrix", "Rating": "4.0"}"
Movie deserializedMovie = JsonConvert.DeserializeObject<Movie>(responseData);

检查它们实际返回的是什么,因为响应可以包含一个电影对象,而是可以包含列表,然后您必须像这样编写代码:

List<Movie> movies= JsonConvert.DeserializeObject<List<Movie>>(responseData);

希望这会有所帮助:)

感谢aminuls有用的答案,我找到了一个很好的解决方案:

// SearchMovie method
public async Task MovieSearch(string search)
{          
    System.Net.ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
    var baseAddress = new Uri("http://api.themoviedb.org/3/");
    using (var httpClient = new HttpClient { BaseAddress = baseAddress })
    {     
        httpClient.DefaultRequestHeaders.TryAddWithoutValidation("accept", "application/json");
        // api_key can be requestred on TMDB website
        using (var response = await httpClient.GetAsync("search/movie?api_key=941c...&query=" + search))
        {
            string responseData = await response.Content.ReadAsStringAsync();
            var model = JsonConvert.DeserializeObject<RootObject>(responseData);
            foreach (var result in model.results)
            {
                // All movies
                // System.Diagnostics.Debug.WriteLine(result.title);
            }      
        }
    }
}
// Generated model from json2csharp.com
public class Result
{
    public bool adult { get; set; }
    public string backdrop_path { get; set; }
    public int id { get; set; }
    public string original_title { get; set; }
    public string release_date { get; set; }
    public string poster_path { get; set; }
    public double popularity { get; set; }
    public string title { get; set; }
    public bool video { get; set; }
    public double vote_average { get; set; }
    public int vote_count { get; set; }
}
public class RootObject
{
    public int page { get; set; }
    public List<Result> results { get; set; }
    public int total_pages { get; set; }
    public int total_results { get; set; }
}
// Examle of search functionaly in View
@Html.ActionLink("Search movie", "MovieSearch", new { search = "mission"})

最新更新