Zum Inhalt springen
  • 0

C# REST WebAPI Client mit RestSharp Problem...


Frage

Geschrieben (bearbeitet)

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

Empfohlene Beiträge

  • 0
Geschrieben

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.

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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...