2016-07-18 15 views
1

ich so eine Zeichenfolge auf meiner Web-api zu senden versucht bin:Senden einer Reihe von JSON als POST zu asp.net web api

public IList<Product> GetProducts(string myString) 
{ 
    IList<Product> retVal = null; 
    using (var client = GetClient()) 
    { 
     HttpContent httpContent = new StringContent(myString, Encoding.UTF8, "application/json"); 

     // HTTP POST 
     HttpResponseMessage response = client.PostAsync("api/products", httpContent).Result; 
    } 
    return retVal; 
} 

In meinem Products meine Aktion-Methode sieht wie folgt aus :

// POST: api/products/filter 
[HttpPost("filter")] 
public IList<Product> Filter(string filter) 
{ 

} 

Aus irgendeinem Grund der Filter param kommen in als null hält. Irgendwelche Ideen warum?

Antwort

2

Sie Parameter mit [FromBody] Attribut als Beitrag nehmen wird nicht Wert von url schmücken sollte ich vermute

+0

Hmm Ich habe es mit FromBody versucht und immer noch Null. Sollte content-type application/json sein, wenn eine Zeichenfolge von json gesendet wird? –

0

Sieht aus wie youre api/Produkte veröffentlichen, nicht api/products/Filter. Die Signatur für die Methode sollte wie Vidas mit dem from body-Attribut angeben, aber an die richtige URL gesendet werden.

[HttpPost] 
[Route("api/products/filter") 
Public ilist<product> Filter([FromBody] string filter) 
{...} 

Während die Route nicht unbedingt erforderlich ist, kann sie Ihnen helfen, die URL anzugeben, mit der Sie arbeiten!

+0

Entschuldigung, ich entschuldige mich. An der Spitze des Produktcontrollers habe ich api/controllerName angegeben. –

+0

Meine Beobachtung basierte auf Ihrer getproducts-Methode, sieht aber so aus, als ob Sie sie am Ende sortiert haben, was die Hauptsache ist –