Vik*_*ash -1 c# rest dotnet-httpclient
问题:
我正在使用.NET类HttpClient向端点URL发出请求.
我的代码:
using (HttpClient apiClient1 = new HttpClient())
{
apiClient.GetAsync(apiUrl).Result;
}
Run Code Online (Sandbox Code Playgroud)
问题已识别:
如果我使用using块,我打开多个连接,导致socketExceptions.
将我的上述代码更改为:
public class RequestController: ApiController
{
private static HttpClient apiClient = new HttpClient();
[HttpPost]
public dynamic GetWebApiData([FromBody] ParamData params)
{
var resultContent = apiClient.GetAsync(apiUrl).Result.Content;
return Newtonsoft.Json.JsonConvert.DeserializeObject<object>(resultContent.ReadAsStringAsync().Result);
}
}
Run Code Online (Sandbox Code Playgroud)
使后上面的代码的结果HttpClient为static如下:
仅建立一个连接.
对于每个请求,我正在寻找响应时间减少200毫秒.
我需要的:
我希望通过高速响应以至少50次调用终点来进行并发呼叫.
请帮助我解决这个问题.
使用异步API并停止调用.Result阻塞调用.
public class RequestController: ApiController {
private static HttpClient apiClient = new HttpClient();
[HttpPost]
public async Task<IHttpActionResult> GetWebApiData([FromBody] ParamData data) {
var response = await apiClient.GetAsync(apiUrl);
var resultContent = response.Content;
var model = await resultContent.ReadAsAsync<dynamic>();
return Ok(model);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
416 次 |
| 最近记录: |