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?
:::
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.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
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.
:::
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).
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
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.
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.
:::