2016-11-01 6 views
0

Я разрабатываю приложение asp.Net mvc. В моем приложении мне нужно получить объект json с удаленного сервера. Я использую для этого веб-клиент. Но это дает мне ошибку. Мой сценарий ниже.Невозможно получить данные Json с привязки удаленного сервера к объекту в asp.net mvc

У меня есть этот URL

http://graph.facebook.com/{fb_id}/picture?width=200&height=200&redirect=false 

Когда я получить доступ из браузера, то вернуть что-то вроде этого

enter image description here

Так что я пытаюсь получить эти данные в виде JSON, а затем сериализации их обратно , Поэтому я строю два класса, как показано ниже, чтобы связать эти данные.

public class FacebookAvatarResponse 
    { 
     [JsonProperty("data")] 
     public FacebookAvatarData Data { get; set; } 
    } 

    public class FacebookAvatarData 
    { 
     [JsonProperty("height")] 
     public int Height { get; set; } 
     [JsonProperty("width")] 
     public int Width { get; set; } 
     [JsonProperty("is_silhouette")] 
     public bool IsSilhouette { get; set; } 
     [JsonProperty("url")] 
     public string Url { get; set; } 
    } 

В CONTROLL, я построил метод действия

[AllowAnonymous] 
     public JsonResult Test(string avatarDataUrl) 
     { 
      using (WebClient webClient = new WebClient()) 
      { 
       string data = webClient.DownloadString(avatarDataUrl); 
       return Json(JsonConvert.DeserializeObject<FacebookAvatarResponse>(data),JsonRequestBehavior.AllowGet); 
      } 
     } 

Как вы можете видеть, я получаю, что данные в формате JSON, а затем возвращают в качестве результата действия. Но когда я запрашиваю, чтобы метод действия передавал правильный URL-адрес в качестве параметра, он дает мне эту ошибку.

enter image description here

Как я могу получить JSON данные с удаленного сервера привязки к конкретным классам?

+0

если вы удалите 'avatarDataUrl' и заменить' webClient.DownloadString ("http://graph.facebook.com/{fb_id}/picture?width=200&height=200&redirect=false"); 'это делает Работа? –

+0

Я. Это работает. Это загрузка изображения напрямую. Вместо этого он не возвращает Json, как в браузере. Зачем? –

+0

Так работает ожидаемый или вы пытались вернуть JSON? –

ответ

0

Возможно, вы не передаете JSON в DeserializeObject.

JsonConvert.DeserializeObject принимает значение JSON.

Проверьте, что ваши данные должны быть в формате json для десериализации.

Json(JsonConvert.DeserializeObject<FacebookAvatarResponse>(data), 
    JsonRequestBehavior.AllowGet); 

 Смежные вопросы

  • Нет связанных вопросов^_^