Hallo ich habe ein Problem mit der API von Etsy wenn ich in meinem Request Umlaute verwende.
Im folgenden vereinfachten Code habe ich beim Paramater title 'testartikel mit Ä' stehen. Wenn ich das Ä weglasse funktioniert der Code einwandfrei.
Mit dem Ä bekomme ich unten angegebenen Fehler. Das Ä durch %C3%84 zum Beispiel zu ersetzen hatte auch keinen Erfolg gebracht.
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
var restClient = new RestClient("https://openapi.etsy.com/v2");
restClient.Authenticator = OAuth1Authenticator.ForAccessToken(etsyCredentials.ConsumerKey, etsyCredentials.ConsumerSecret, etsyCredentials.OAuth_Token, etsyCredentials.OAuth_Token_Secret, RestSharp.Authenticators.OAuth.OAuthSignatureMethod.HmacSha1);
string requestParameters = "/listings?quantity=1&title=testartikel mit Ä&description=Testartikel, Bitte nicht kaufen.&price=0.99&taxonomy_id=6451&who_made=i_did&when_made=2010_2019&is_supply=false
&shipping_template_id=60205488400&renew=True&state=draft&language=de";
var request = new RestRequest(requestParameters);
request.Method = Method.POST;
IRestResponse irestResponse = restClient.Execute(request);
Fehlermeldung:
"oauth_problem=signature_invalid&debug_sbs=POST&https
%3A%2F%2Fopenapi.etsy.com%2Fv2%2Flistings&description%3DTestartikel%252C%2520Bitte%2520nicht%2520kaufen.%26is_supply%3Dfalse%26language%3Dde%26oauth_consumer_key%3Dgn31uuabj1qv97zjqozgnsto%26oauth_nonce%3D02xdjk7bxv4id7mx%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1631170110%26oauth_token
%3D8fc58d589855126dd880b3ac74eb1b%26oauth_version%3D1.0%26price%3D0.99%26quantity%3D1%26renew%3DTrue%26shipping_template_id%3D60205488400%26state%3Ddraft%26taxonomy_id%3D6451%26title%3Dtestartikel%2520mit%2520%25C3%2584%26when_made%3D2010_2019%26who_made%3Di_did"
Ich hatte diese Frage auch schon in GoogleGroups ohne Antworten und auf stackoverflow gepostet. Leider haben mir die Antworten dort nicht weiterhelfen können.
https://groups.google.com/g/etsy-api-v2/c/IQuehEjNwI4
etsy-restsharp-oauth-signature-invalid
Es wäre super wenn mir hier jemand bei dem Problem weiterhelfen könnte, da ich echt nicht mehr weiter weiß.
Grüße limu
RestSharp ist ein sehr sehr sehr einfaches Konstrukt; Du musst hier alles manuell encoden.
Siehe dazu auch Lösungsvorschläge im Repo, zB https://github.com/restsharp/RestSharp/issues/1141
Wenn Du eine modernere Lib verwenden würdest zB Refit verwendest; das macht sowas alles automatisch.
Ob aber etsy allgemein was gegen Umlaute / Special Chars hat, das musst evtl in der Doku nachlesen, das hat dann nichts mit HTTP / REST zutun.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Hallo Abt,
danke dir für die Antwort.
Dann werde ich mir mal Refit anschauen und testen ob es damit klappt.
In der Doku von Etsy gibt es keinerlei Infos zu Umlauten.
Das ist die einzige angegebene Einschränkung:
This string is valid if it does not match the following pattern: /[^\p{L}\p{Nd}\p{P}\p{Sm}\p{Zs}™©®]/u. The characters %, :, & and + can only be used once each.