2016-07-15 7 views
0

Ich benutze C# mit VS 2015, .NET 4.5.2 und Web API 2
Ich möchte einen erholsamen Webservice aufbauen.C# webservice wie man mehrere Parameter an die POST Aktion sendet

Ich brauche CURL oder Fiddler zum Testen des Webservice (nicht AJAX oder Jquery).
Ich würde CURL bevorzugen, wenn möglich.

Es ist mir gelungen, GET-Anfragen mit CURL an den Webservice zu senden.
Aber ich muss auch Daten an den Webservice senden mit POST

Leider habe ich Probleme mit POST.

Ich muss nicht nur 1 Parameter, sondern mehrere Parameter senden.
(Im Grunde muss ich einen ganzen Datensatz senden, der zu einer Datenbank hinzugefügt wird)
Es scheint, dass es nicht möglich ist, mehrere Parameter an die POST-Aktion zu senden
Aber anstatt mehrere Parameter zu senden, sollte ich in der Lage sein, die Datensatzdaten mit einem Array oder List-Objekt zu senden?

Wie soll ich die POST-Aktion im Webservice-Controller codieren?
Wie soll ich die Daten mit CURL (oder Fiddler) senden, damit die POST-Aktion es verarbeiten kann?

Ich habe einige Beispiele gesehen, die den URI zu POST-Daten verwendet haben ... aber die Verwendung von URI scheint eine Inhaltslänge zu benötigen?
Wenn möglich würde ich vermeiden, Inhaltslänge festzulegen.


Modell:
das Modell die Daten darstellt, die Post gesendet werden sollte unter Verwendung von:

public class Product 
{ 
public int  Id  { get; set; } 
public string Name  { get; set; } 
public string Category { get; set; } 
public decimal Price { get; set; } 
} 



Kunde:
Der Client (curl/fiddler) müssen Kann Modelldaten senden, zum Beispiel:

id = 5
Name = "test"
Kategorie = "Hardware"
Preis = 10

Wie kann ich diese Daten mit CURL (oder Fiedler) schicken?


Controller Aktion:
Wie soll ich diese Aktion Code?
Wäre das in Ordnung?:

[HttpPost] 
public void AddProduct([FromBody] List<Product> data) 
{ 
Do something 
} 


webervice URL
Nur der Vollständigkeit halber:
My Webservice URL wie diese
http://myServer/api/product

Antwort

0

Für das Hinzufügen dieser Art von Sache .Make eine Wrapper-Klasse sieht und dann senden Sie es an POST.

[HttpPost] 
public void AddProduct(List<Product> data) 
{ 
Do something 
} 

Statt dessen, was Sie

class Wrapper{ 
List<Product> data 
} 

eine Klasse is- Make tun können, und verwenden Sie dann

[HttpPost] 
    public void AddProduct(Wrapper data) 
    { 
    Do something 
    } 

Dies funktioniert. Wenn nicht funktioniert, lassen Sie es mich wissen. Ich werde versuchen, Ihnen die Lösung zu liefern. Für mich funktionierte das, als ich ein Problem hatte.

+0

danke für. Aber wie kann der Client - zB CURL - Daten senden, die zum Wrapper passen? – Spacewalker

+0

Ich kann Ihnen durch POST MAN sagen Sie es im RAW-Modus senden und mit Kopf application/json als { Daten: { Daten: [{}] } } –

+0

oder wenn ROTATION problematisch ist - vielleicht können Sie Geben Sie mir eine Idee, welche .NET-Klassen verwendet werden, um Daten an einen Webservice zu senden .... – Spacewalker