Laden...

Erste Schritte mit RestSharp. Wie kann ich auf die Response Daten zugreifen?

Erstellt von diana vor 3 Jahren Letzter Beitrag vor 3 Jahren 1.343 Views
D
diana Themenstarter:in
586 Beiträge seit 2004
vor 3 Jahren
Erste Schritte mit RestSharp. Wie kann ich auf die Response Daten zugreifen?

Hallo,

momentan habe ich mir diesen Code zusammengebaut, um auf einen anderen Rest-Service zuzugreifen:

 client = new RestSharp.RestClient("...");
                client.Proxy = proxy;

                var request = new RestSharp.RestRequest("/test",RestSharp.Method.POST);
                
                request.AddHeader("Accept", "text/plain");
                //request.AddHeader("Content-Type", "application/json");
                request.AddHeader("Content-Type", "text/plain");

                request.AddParameter("username", "username", RestSharp.ParameterType.RequestBody);
                request.AddParameter("password", "password", 
                //request.AddParameter("application/json", "accessToken", RestSharp.ParameterType.RequestBody);
        
                var response = client.Execute(request);

Leider, bekomme ich nur folgenden Fehler: Unsupported Media Type

Und dann erwarte ich im response Body den Parameter accessToken, wie kann ich auf diesen zugreifen?

Hat vielleicht jemand hier mehr Erfahrung mit RestSharp und kann mir helfen?

:::

16.807 Beiträge seit 2008
vor 3 Jahren

Schau Dir Refit an; das ist ein RestSharp nur in einfach und moderner.
https://github.com/reactiveui/refit - generiert Dir den Client automatisch anhand eines Interfaces.

Beispiele sind dutzende auf der Seite.

D
diana Themenstarter:in
586 Beiträge seit 2004
vor 3 Jahren

Bräuchte schon mal eine Hilfe in RestSharp. Blicke da schon kaum durch...

Ich hab doch hier schon fast alles, nur der Aufruf der Methode ist noch nicht korrekt.

:::

16.807 Beiträge seit 2008
vor 3 Jahren

Wie gesagt; Refit ist einfacher - und Du sprichst davon, dass Dir RestSharp zu kompliziert ist (warum auch immer).
Warum machste Dir dann selbst das Leben schwer und verwendest nicht das einfachere(und nebenbei das modernere)?. Aber wenn Du nicht magst... Deine Sache. Deine Zeit.

RestSharp ist leider nicht die stabilste Lib (auch deswegen der Hinweis auf Refit).
Daher schau in Fiddler nach, ob Deine Header wirklich mitgeschickt werden. Gab schon zig Bugs dazu in der Vergangenheit.
Ich glaube aber einfach, dass Dein AddParameter murks ist und nicht das abgeschickt wird, was Deine API erwartet.

var request = new RestRequest
{
    Resource = "/test",
    RequestFormat = DataFormat.Json,
    Method = Method.POST
};
request.AddBody(new Auth { Username = "username", Password ="password" });

verwende ich in einer meiner Libs und das geht.

Und dann erwarte ich im response Body den Parameter accessToken, wie kann ich auf diesen zugreifen?

Kann das sein, dass Du ein OpenId / OAuth Request von Hand nachbauen willst? Warum?
Warum nutzt Du keine entsprechende SDK dafür, die es tausendfach gibt?
Du musst ja auch den Token immer wieder mitgeben (was Dir übrigens auch Refit automatisch macht, RestSharp nicht).

4.931 Beiträge seit 2008
vor 3 Jahren

Du hast anscheinend dieselben Fehler wie in Unsupported media type using RestSharp library und How to solve UnsupportedMediatType when using RestSharp and OAuth2 gemacht, also falschen Header-Typ ("application/json" sollte es sein) und du darfst den Body dann nicht wieder mit ParameterType.RequestBody überschreiben.

D
diana Themenstarter:in
586 Beiträge seit 2004
vor 3 Jahren

Ich danke euch erstmal und schaue mir das mal näher an.

:::

D
diana Themenstarter:in
586 Beiträge seit 2004
vor 3 Jahren

Nochmal vielen Dank an eure Tipps.

@Abt: Die Parameter-Übergabe ist die Lösung gewesen. Bin eben total am Anfang des Themas.

GELÖST!

Wenn ich so langsam verstehe, was zu tun ist, dann kann ich nach Alternativen von RestSharp suchen.

:::