Публикация данных с помощью FormUrlEncoded OR Json в веб-интерфейсе - PullRequest
0 голосов
/ 15 мая 2019

Я создал общий метод, с помощью которого мы публикуем данные в веб-API. И во время публикации я сериализирую данные в json. Ниже мой общий метод.

public HttpResponseMessage GetData<T>(T parm, string url) where T : class
        {
            try
            {
                var client = new HttpClient();

                var result = client.PostAsync(url, SerializeData<T>(parm));

                result.Wait();

                if (result.Result.IsSuccessStatusCode)
                {
                    // Do something
                }

            }
            catch (Exception ex)
            {
                throw ex;
            }

            return default(HttpResponseMessage);
        }

 private StringContent SerializeData<T>(T obj)
        {
            string mediaType = "application/json";

            string content = JsonConvert.SerializeObject(obj, formatter);

            return new StringContent(content, Encoding.UTF8, mediaType);
        }

Это прекрасно работает, если я передаю объект класса из метода вызывающего типа

var result = service.GetData<MyClass>(myclassobj,url);

Тем не менее, для некоторых URL при передаче объекта класса не работает. Итак, мы написали еще один метод, в котором мы публикуем данные в формате FormUrlEncodedContent , как показано ниже, и он отлично работает.

var Parameters = new Dictionary<string, string> { { "Key1", "some value" }, { "Key2", "another value" } };
var EncodedContent = new FormUrlEncodedContent(Parameters);
var postTask = _client.PostAsync(url, EncodedContent);

Я пытался отправить данные FormUrlEncoded в метод JSON, а также изменил тип носителя. Но не в состоянии правильно сериализовать его. Апис / услуги, которые мы потребляем, предоставляются сторонними поставщиками.

Поэтому мой вопрос: какие изменения необходимы в методе, который будет работать со всеми форматами, такими как JSON, FormUrlEncodedContent и т. Д.

Кроме того, это зависит от того, как написаны API-интерфейсы, в которые они будут работать только с определенными форматами, такими как JSON, FormUrlEncodedContent и т. Д.

В основном я пытаюсь сохранить один общий метод, который будет поддерживать все форматы.

Любая помощь по этому вопросу приветствуется!

...