Hallo Ich möchte Web Api-Methode von C# -Client durch meine Körpervariable in Web-API-Controller ist die ganze Zeit Null nennen. Wie man es richtig einstellt? Client-Seite:Web Api FromBody ist Null von Web-Client
IFileService imgService = new ImageServiceBll();
var image = System.Drawing.Image.FromFile(serverFile);
var dataImage = imgService.ImageToBase64(image, System.Drawing.Imaging.ImageFormat.Png);
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("http://site.local/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
// HTTP POST
var data = new
{
imageData = dataImage,
version = version
};
HttpResponseMessage response = await client.PostAsJsonAsync("api/contenttool/SaveImage", data);
if (response.IsSuccessStatusCode)
{
Uri gizmoUrl = response.Headers.Location;
}
}
Server Side:
public class ContentToolController : ApiController
{
public IFileService FileService { get; set; }
// POST api/contenttool
public string SaveImage([FromBody]string data)
{
JObject jObject = JObject.Parse(data);
JObject version = (JObject)jObject["version"];
return "-OK-" + version;
}
}
guter Punkt, aber ich fand, wenn param wie eine Zeichenkette zu PostAsJsonAsync sendet, würde es gut funktionieren. –
Sie arbeiten wirklich gegen das System. Entweder die Daten als Zeichenfolge senden und als Zeichenfolge binden, ODER als JSON senden und an dasselbe Datenobjekt auf der WebAPI-Seite binden. Der zweite Weg ist der richtige Weg, es zu tun. So vermeiden Sie das Schreiben spezifischer JSON-Manipulationscodes in Ihre Aktionsmethode, das Framework ist dort für Sie. –
@YishaiGalatzer Ich stimme dem größtenteils zu, aber wenn ich eine Liste von Objekten serialisieren möchte, würde ich gezwungen sein, ein neues Modell zu erstellen, einfach um eine Liste zu halten! Das scheint verrückt, oder? – Chris