Zum Inhalt springen
  • 0

C# REST WebAPI Client mit RestSharp Problem...


Tehrob

Frage

Hallo liebe Entwicklerfreunde.

Ich beschäftige mich momentan ein bisschen mit REST WebAPI sowie der Anbindung mittels UnitOfWork / Repository pattern.
Dazu habe ich mir einen Selfhosted Server basierend auf den von Microsoft verfügbaren Selfthosted WebAPI Bibliotheken gebaut sowie eine Client Applikation
die mittels restsharp Bibliothek an jenen Server Daten senden soll.

Folgendes Problem tut sich auf:
Beim POST landet der request vom Client zwar beim richtigen Controller, das übergebene Objekt habt aber immer leere Werte.
Führe ich den POST beim Server mit der Chrome Erweiterung "ARC(Advanced REST Client)" aus klappt das einwandfrei.
Beim client debuggen habe ich mir den serialiserten JSON String aus dem request gezogen und in die Chrome Erweiterung kopiert. 
Der JSON String ist gültig und wird von dort aus auch beim Server akzeptiert.

Sämtliche CRUD Methoden funktionieren mit dem Advanced REST Client, daher denke ich ist hier die Server Seite auszuschließen.


Hier der entsprechende Code aus der ApiController Klasse:

[HttpPost]
public HttpResponseMessage Post([FromBody]LiquidBase _liquidBase)
{
    repo.InsertOrUpdate(_liquidBase);
	repo.Save();
	
	return new HttpResponseMessage(HttpStatusCode.OK);
}

_liquidBase hat hier in dem Fall immer Nullwerte sobald ich etwas vom Client aus POST(e).

 

Hier die Funktion welche beim Client den POST übernimmt.

internal ResponseMessage PostLiquidBase(LiquidBase _liquidBase)
{
	RestClient client = getAuthenticatedClient(config);
	RestRequest request = new RestRequest("api/LiquidBase", Method.POST);

	string data = JsonConvert.SerializeObject(_liquidBase);
	data = data.Replace("\"Id\":0,", string.Empty);

	request.AddParameter("application/json", data, ParameterType.RequestBody);
	request.RequestFormat = DataFormat.Json;

	return GetWebResponse(client, request);
}

GetWebResponse(client, request) executed das ganze dann nur noch 

 IRestResponse response = client.Execute(request);

und wertet die response dann weiter aus. Ist hier aber nicht weiter wichtig da es ja ab dem execute, bzw dem Empfang beim Server irgendwo schief läuft.

Ich hoffe jemand weiß weiter.

Euer Tehrob

Bearbeitet von Tehrob
Link zu diesem Kommentar
Auf anderen Seiten teilen

Empfohlene Beiträge

  • 0

Ich setzte in der Entwicklung immer den Fiddler ein, um mir die Inhalte zwischen Client und Server anzuschauen. Ggf. Auch einen anderen Proxy. Damit lassen sich nicht nur die Inhalte sondern auch die Header schnell kontrollieren.

Probiere es mal mit einer Post-Methode ohne Parameter und schaue dir den Content an, ob da was drin ist.
Dann kannst du den String selbst auslesen und manuell parsen. Vielleicht hast du dann ja auch schon dein Problem gefunden.

Eine Frage am Rande : warum setzt du nicht die http-client Bibliothek und json.net ein? Ersteres bietet mehr Möglichkeiten aus der Webrequest und letzteres ist performanter als die enthaltene Logik und wird darüber hinaus auf dem Server sowieso verwendet.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Diese Frage beantworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...