我正在测试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集成即可。
致谢