2016-11-01 8 views
0

abrufen Ich entwickle eine Asp.Net mvc-Anwendung. In meiner Anwendung muss ich Json-Objekt von Remote-Server abrufen. Ich benutze Web-Client dafür. Aber es gibt mir einen Fehler. Mein Szenario ist unten.Nicht in der Lage, JSON-Daten von Remote-Server-Bindung an Objekt in asp.net MVC

Ich habe diese URL

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

Wenn ich von Browser zugreifen, es so etwas wie dieses

enter image description here

So kehre ich bin versucht, diese Daten als Json abzurufen und sie dann wieder serialisiert . Ich baue also zwei Klassen wie unten, um diese Daten zu binden.

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; } 
    } 

In controll baute ich eine Aktion Methode

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

Wie man sehen kann ich diese Daten als Json bin immer und dann als Aktion Ergebnis zurück. Aber wenn ich anfordere, dass diese Methode die korrekte URL als Parameter übergibt, gibt es mir diesen Fehler.

enter image description here

Wie kann ich abrufen JSON-Daten von Remote-Server auf die spezifischen Klassen verbindlich?

+0

, wenn Sie 'avatarDataUrl' entfernen und mit' webClient.DownloadString ("http://graph.facebook.com/{fb_id}/picture?width=200&height=200&redirect=false") ersetzen; 'tut es Arbeit? –

+0

Ya. Es funktioniert. Es lädt das Bild direkt herunter. Es gibt Json nicht zurück, wie ich im Browser zugreife. Warum? –

+0

Also ist das Arbeiten ein erwartet oder haben Sie versucht, den JSON zurückzugeben? –

Antwort

0

Möglicherweise übergeben Sie JSON nicht an DeserializeObject.

JsonConvert.DeserializeObject nimmt JSON-Wert.

Überprüfen Sie, ob Ihre Daten im JSON-Format vorliegen, um deserialisieren zu können.

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