RestSharp를 사용하여 MailChimp 계정의 계정 세부 정보를 쿼리 할 때 "API 키가 없습니다"와 함께 "401 : 무단"메시지가 표시됩니다.
우리는 동일한 방법을 사용하여 여러 다른 방법으로 RestClient를 만들고 있으며 모든 요청에서 완벽하게 작동합니다. 그러나 RestRequest URI가 비어 있음을 의미하는 계정 세부 정보를 요청하려고하면이 이상한 오류와 메시지가 표시됩니다.
예 :
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
}
Postman에서 API 호출을 시도하면 모든 것이 잘됩니다. https://us2.api.mailchimp.com/3.0
, 기본 인증을 사용하는 GET은 모든 계정 정보를 제공하며 C #에서 디버깅 할 때 모두 동일하게 보입니다.
RestSharp 또는 MailChimp API의 버그를 비난할지 여부를 결정하려고합니다. 비슷한 문제가있는 사람이 있습니까?
몇 시간 후에 마침내이 문제의 원인을 찾았습니다 ..
RestSharp가 요청을 https://us2.api.mailchimp.com/3.0/
할 때 후행 '/'를 생략하도록 선택합니다 (예 : RestRequest에 구체적으로 추가하더라도 new RestRequest("/", Method.GET)
).
그래서 요청은 https://us2.api.mailchimp.com/3.0
이것은 '에 리디렉션 서버 측 의한 https://us2.api.mailchimp.com/3.0/
"( 함께 이 리디렉션 인증 헤더 멀리 세정 어떤 이유로 후행'/ ') 및 대있다.
그래서 우리는
new RestRequest("/", Method.GET)
몇 가지 매개 변수 ( req.AddParameter("fields", "email")
)를 사용하여 후행 '/'를 스크럽하지 않지만 실패했습니다.
RestSharp를 "속일"수있는 유일한 방법은 다음과 같이 좀 덜 섹시하게 작성하는 것입니다.
new RestRequest("/?fields=email", Method.GET)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다