2017-12-18 4 views
0

Ich erhalte immer diesen Fehler, wenn ich versuche, die API anzufordern. Einige Details über die api: die Methode POST und die Parameter korrekt sind, auch (wenn ich es auf Postbote versuchen, kein Problem)Fehler beim Senden der POST-Anfrage an die API (Senden einer Nachricht mit diesem Verb nicht möglich)

Hier ist mein Code:

JavaScriptSerializer js = new JavaScriptSerializer(); 
using (WebClient client = new WebClient()) 
{ 
    foreach (var ad in documents) 
    { 

     var doc = js.Serialize(ad); 
     var json = "{\"Message\":\"" + doc + "\"}"; 

     var response = 
      client.UploadValues("apiUrl", new NameValueCollection() 
      { 
       {"json", json} 
      }); 
    } 
} 

ich gelesen, dass UploadValues ​​ist POST standardmäßig. Dieser Code wird in einer einfachen Konsolenanwendung aufgerufen. Irgendeine Idee warum ich diesen Fehler bekomme?

+2

Sowohl 'WebClient' und' JavaScriptSerializer' meist veraltet sind, sollten Sie 'HttpClient' mit' NewtonSoft.Json' –

+1

'var json verwenden werden =„{ \ "Nachricht \": \ "" + doc + "\"} ";" Yuk. Warum sollte es von Hand gebaut werden? Es fragt nur nach nicht abfangbaren Syntaxfehlern. Sie verwenden bereits einen Serializer (wenn auch veraltet) und eine NameValueCollection. Warum also zufällig eine Zeichenfolge in der Mitte erstellen? Wie auch immer, wenn es in Postman funktioniert, aber nicht in diesem, sollten Sie zuerst ein Werkzeug wie Fiddler verwenden, um beide Anfragen abzufangen und dann den Unterschied zwischen den tatsächlichen HTTP-Anfragen zu erkennen, die von den zwei verschiedenen Software-Stücken erzeugt werden. – ADyson

+0

Vielen Dank für Ihre Kommentare, es funktioniert mit diesem Code! – Jydai

Antwort

2

Hier ist ein funktionierendes Stück Code:

var doc = JsonConvert.SerializeObject(message);  
var stringContent = new StringContent(
     message, 
     UnicodeEncoding.UTF8, 
     "application/json"); 

HttpClient client = new HttpClient();     

client.PostAsync("apiUrl", stringContent); 
Verwandte Themen