2017-02-01 4 views
0

Wenn RestSharp mit Kontodaten in Ihrem MailChimp Konto abzufragen ich ein „401: nicht autorisierte“ mit „API-Schlüssel fehlt“, obwohl es ist eindeutig nicht!Get „API-Schlüssel fehlt“ Fehler, wenn auf Mailchimp API Kontodaten abfragt 3.0 mit RestSharp

Wir verwenden dieselbe Methode, um unseren RestClient mit verschiedenen Methoden zu erstellen, und bei allen Anfragen funktioniert er einwandfrei. Wenn wir jedoch versuchen, die Kontodetails anzufordern, was bedeutet, dass der RestRequest-URI leer ist, erhalten wir diesen seltsamen Fehler und die Nachricht.

Beispiele:

private static RestClient CreateApi3Client(string apikey) 
{ 
    var client = new RestClient("https://us2.api.mailchimp.com/3.0"); 
    client.Authenticator = new HttpBasicAuthenticator(null, apiKey); 

    return client; 
} 

public void TestCases() { 
    var client = CreateApi3Client(_account.MailChimpApiKey); 

    var req1 = new RestRequest($"lists/{_account.MailChimpList}/webhooks", Method.GET); 
    var res1 = client.Execute(req1); // works perfectly 

    var req2 = new RestRequest($"automations/{account.MailChimpTriggerEmail}/emails", Method.GET); 
    var res2 = client.Execute(req2); // no problem 

    var req3 = new RestRequest(Method.GET); 
    var res3 = client.Execute(req3); // will give 401, api key missing 

    var req4 = new RestRequest(string.Empty, Method.GET); 
    var res4 = client.Execute(req4); // same here, 401 
} 

Wenn der API-Aufruf in Postman versucht, alles ist gut. https://us2.api.mailchimp.com/3.0, GET mit grundlegenden Auth gibt mir alle Kontoinformationen und beim Debuggen in C# sieht alles identisch aus.

Ich versuche zu entscheiden, ob ich auf einen Fehler in RestSharp oder MailChimp API hinweisen soll. Hat jemand ein ähnliches Problem gehabt?

Antwort

1

Nach mehreren Stunden fanden wir endlich, was das verursacht wurde ..

Wenn RestSharp die Anforderung stellt, um https://us2.api.mailchimp.com/3.0/ es entscheidet sich den nachlauf ‚/‘ (auch weglassen, wenn Sie dies ausdrücklich in der RestRequest schreiben, : new RestRequest("/", Method.GET))

so wurde der Antrag an https://us2.api.mailchimp.com/3.0

gemacht Diesen einen server verursachte umleiten irgendein Grund zu 'https://us2.api.mailchimp.com/3.0/' (mit den hinteren '/') und für Diese Umleitung löschte den Authentifizierungsheader.

So haben wir versucht, einen

new RestRequest("/", Method.GET)

mit einigen Parametern (req.AddParameter("fields", "email")), die es nicht scheuern den nachgestellten '/' zu machen, aber dies versagte.

Der einzige Weg, wir waren in der Lage zu „täuschen“ RestSharp es ein bisschen weniger sexy wie zu schreiben war:

new RestRequest("/?fields=email", Method.GET)

Verwandte Themen