Обнаружение модели ошибки или требуемой модели объекта из вызова API в mailchimp
MailChimp API V3.0, похоже, возвращает только правильную объектную модель, такую как List, в противном случае он возвращает модель ошибки. Как показано здесь в документации: (внизу страницы для ответа об ошибке и остальной части страницы для ответа на тело сообщения об успешном вызове) Ссылка на документацию MailChimp | Списки
Вот мой текущий код:
public MailChimpApiResult CallApi(string route, Dictionary<string, string> parametersDictionary)
{
MailChimpApiResult apiResult = new MailChimpApiResult
{
Data = "",
Error = null
};
StringBuilder postContentStringBuilder = new StringBuilder("");
var uri = CreateBaseUrl(route);
var postContent = new NameValueCollection();
if (parametersDictionary != null)
{
foreach (var kvp in parametersDictionary)
{
if (kvp.Value == null)
{
postContent.Add(kvp.Key.ToString(), string.Empty);
postContentStringBuilder.Append($"'{kvp.Key.ToString()}':{string.Empty} ");
}
else
{
postContent.Add(kvp.Key.ToString(), kvp.Value.ToString());
postContentStringBuilder.Append($"'{kvp.Key.ToString()}':{kvp.Value.ToString()} ");
}
}
}
using (HttpClient client = new HttpClient())
{
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", $"apikey {_developerApiKey}");
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.BaseAddress = new Uri(uri);
var postContentJsonString = JsonConvert.SerializeObject(postContent);
var content = new StringContent(postContentJsonString, Encoding.UTF8, "application/json");
HttpResponseMessage response = client.PostAsync(route, content).Result;
if (response.IsSuccessStatusCode)
{
apiResult.Data = response.Content.ToString();
}
else
{
string error = CreateErrorDescription(
"MailChimpApiClient.CallApi",
$"postContent = {postContentStringBuilder.ToString()}",
null);
apiResult.Error = JsonConvert.DeserializeObject<MailChimpApiError>(response.Content.ToString());
apiResult.Error.ExtraDetail = error;
}
}
return apiResult;
}
Есть лучший способ сделать это? Спасибо:)