为什么使用WSO2 Api Manager和.Net发布正文有时为空

时间:2019-04-30 16:54:24

标签: c# .net api wso2 api-manager

我正在测试WSO2 Api Manager。

我的Apis运作良好,哇,我需要将它们与Api Manager 2.6.0集成在一起。我进行了一些测试,所有“获取”请求都工作得很好,但是当我发出“发布请求”时有时会失败。由于某些原因,body的参数为空,而API再次接收到参数。

但是,如果我在没有Api Manager的情况下发出请求,则它们始终都能正常运行。

我的API是在.Net Web Api 2.0中开发的。

这是我调用API的代码,我对HttpClient和RestSharp进行了一些测试以得出相同的结果。但是,当我使用Postman进行测试时,通过API管理器可以正常运行APIS。

使用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集成即可。

致谢

0 个答案:

没有答案