Почему post Body иногда нулевой, используя WSO2 Api Manager и .Net - PullRequest
0 голосов
/ 30 апреля 2019

Я тестирую WSO2 Api Manager.

У меня есть некоторые работающие Apis, и я должен интегрировать их с Api Manager 2.6.0. Я сделал некоторый тест, и все запросы Get работают очень хорошо, но когда я делаю Post Request, иногда происходит сбой. По какой-то причине параметры из тела являются нулевыми, в другой раз параметры принимаются API.

Однако, если я делаю запросы без Api Manager, они все время работают хорошо.

Мои API разработаны в .Net Web Api 2.0.

Это мой код для вызова API, я провожу некоторые тесты с HttpClient и RestSharp, получая одинаковый результат. Однако, когда я тестирую с помощью Postman, APIS всегда работает нормально, через API Manager.

Пример использования HttpClient:

public async Task PostHttpClient(TarificacionParametros entidad, string url)
    {
        var personaJson = JsonConvert.SerializeObject(entidad);
        HttpClient httpClient = new HttpClient();
        httpClient.DefaultRequestHeaders.Accept.Clear();
        //httpClient.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
        httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", BEARER);
        HttpContent httpContent = new StringContent(personaJson, System.Text.Encoding.UTF8, "application/json");
        HttpResponseMessage response = httpClient.PostAsync(url, httpContent).Result;
        if (response.IsSuccessStatusCode)
        {
            response.EnsureSuccessStatusCode();
            string responseBody = await response.Content.ReadAsStringAsync();
            var data = JsonConvert.DeserializeObject<object>(responseBody);
        }
    }

Пример использования Restsharp:

 public async Task PostRestSharp(TarificacionParametros entidad, string url)
    {
        var client = new RestClient(url);
        var request = new RestRequest(Method.POST);
        request.RequestFormat = DataFormat.Json;
        request.AddJsonBody(entidad);
        Console.WriteLine(entidad.Capital);
        // easily add HTTP Headers
        request.AddParameter("Authorization", "Bearer " + BEARER, ParameterType.HttpHeader);
        var response = client.Execute<object>(request);
    }

Примечание: я не публикую код API, потому что он хорош, у них есть время для работы с любой проблемой на производстве, теперь нам просто нужно интегрировать их с WSO2 Api Manager.

Привет

...