2016-07-28 4 views
0

Nun, ich weiß, dass HttpClient.SendAsync() verwendet werden können HttpRequestMessage und Anfrage-Methode senden können, POST und Inhalt zu StringContent für einfachen String gesetzt werden ... aber in meinem Fall möchte ich JSON eine komplexere senden Zeichenfolge, die wie folgtSenden JSON-Objekt mit Httpclient

{ 
    "requests": [ 
    { 
     "image": { 
     "content": "" 
     }, 
     "features": [ 
     { 
      "type": "UNSPECIFIED", 
      "maxResults": 50 
     } 
     ] 
    } 
    ] 
} 

I sieht JavaScriptSerializer zu verwenden versucht, aber nicht wissen, wie ein Objekt zu erstellen, die solche json reprsents.

await Browser.SendAsync(new HttpRequestMessage 
{ 
    RequestUri = new Uri("http://127.0.0.1/"), 
    Method = HttpMethod.Post, 
    Content = new StringContent(new JavaScriptSerializer().Serialize()) 
}); 
+0

Das ist schon json, Sie können es nicht weiter serialisieren. Benutze einfach den json als 'StringContent'. – Crowcoder

+0

@Crowcoder Kann ich eine Klasse erstellen, die diesen Baum darstellt? Wenn ja, wie sollte es aussehen?, ich möchte diese Zeichenfolge nicht serialisieren Ich möchte eine auf Anforderung erstellen, die so aussieht –

+1

Erstellen Sie eine Klasse, die eine solche Struktur hat. Es ausfüllen. Serialisieren Sie es als Zeichenfolge. Dann sende es durch HttpClient. –

Antwort

2

Wenn Sie wollen den C# -Code für dieses Objekt, verwenden Sie die RootObject Klasse

public class Image 
{ 
    public string content { get; set; } 
} 

public class Feature 
{ 
    public string type { get; set; } 
    public int maxResults { get; set; } 
} 

public class Request 
{ 
    public Image image { get; set; } 
    public List<Feature> features { get; set; } 
} 

public class RootObject 
{ 
    public List<Request> requests { get; set; } 
} 

zur Verfügung gestellt von http://json2csharp.com/

+1

genial .. Ich wusste das nicht json2csharp, danke! – Forlani

+0

Ich versuche immer die faule Straße zu nehmen;) –

0

erstellen Klassen als @x ... deutete in den Kommentar, um Ihren Baum

public class features 
{ 
    public string type {get;set;} 
    public int maxResults {get;set;} 
} 
public class requests 
{ 
    public List<features> {get;set;} 
    ... the same for images 
} 

es zu bauen Bestücken, serialisiert sie und die Anfrage senden ...