Обнаружение модели ошибки или требуемой модели объекта из вызова 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;
    }

Есть лучший способ сделать это? Спасибо:)

0 ответов

Другие вопросы по тегам