2016-06-07 9 views
1

Wie kann ich WebClient Objekt verwenden, um eine POST-Anfrage wie folgt an:mit ASP.NET ein komplexes Objekt Posting WebAPI

public static void SaveOrUpdateEntity(string url, object data) 
{ 
    using (var client = new WebClient()) 
    { 
     // TODO 
    } 
} 

wo seine data ist ein Person Objekt.

Dies ist Controller-Methode

[HttpPost] 
public void Post([FromBody]Person person) 
{ 
    VeranaWebService.SaveOrUpdatePerson(person); 
} 

und Person Klasse

public class Person 
{ 
    public string Name { get; set; } 
    public string FirstName { get; set; } 
    public DateTime? BirthDate { get; set; } 
    public byte[] Photo { get; set; } 
} 
+1

Eine Möglichkeit ist es newtonsoft Json Serialisierung Routinen serialisiert. Wenn auf der API-Seite die Eingabe vom Typ Person ist, wird sie von der Bindungs-Engine erneut reserviert. –

+1

Ich würde [HttpClient] (https://msdn.microsoft.com/en-us/library/hh138242 (v = vs.110) .aspx) verwenden .. Ich persönlich finde es einfacher zu bedienen. Und ja, serialisieren Sie Ihr Objekt mit NewtonSoft.Json. – Efrain

Antwort

4

Sie können Newtonsoft.Json verwenden, die Sie Ihre Daten auf ein JSON-Objekt serialisiert helfen. Es kann wie dieser

using Newtonsoft.Json; 

public static void SaveOrUpdateEntity(string url, object data) 
{  
    var dataString = JsonConvert.SerializeObject(data); 

    using (var client = new WebClient()) 
    { 
     client.Headers.Add(HttpRequestHeader.ContentType, "application/json"); 
     response = client.UploadString(new Uri(url), "POST", dataString); 
    } 
} 

verwendet werden, um mehr über die newtonsoft Bibliothek zu lernen, here lesen

+0

Danke, jetzt funktioniert es perfekt. –

Verwandte Themen