【发布时间】:2018-02-18 10:26:49
【问题描述】:
我正在尝试从我的 Dynamics CRM 在线发出 HttpRequest 以在外部 ERP 系统上创建记录。我使用 HttpClient 但我不确定我是否正确执行,我没有得到任何响应。代码如下:
public async void Execute(){
string query1 = $"<RequestData>" +
$"<firstField>{model.firstField}</firstField>" +
$"<secondField>{model.secondField}</secondField>" +
$"<thirdField>{model.thirdField}</thirdField>" +
$"</RequestData>";
HttpClient client = CreateClient();
HttpResponseMessage response = await SendRequest(client, HttpMethod.Put, query);
}
private HttpClient CreateClient()
{
using (HttpClient client = new HttpClient())
{
client.BaseAddress = baseAdress;
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
return client;
}
}
private async Task<HttpResponseMessage> SendRequest(HttpClient httpClient, HttpMethod method, string query)
{
HttpRequestMessage request = new HttpRequestMessage(method, query);
return await httpClient.SendAsync(request);
}
【问题讨论】:
-
尝试从
CreateClient中删除using并将using移动到Execute -
此外,您可能don't need to use
usingwith (i.e., dispose)HttpClient。特别是如果您将多次使用它,请将其声明为类级变量,将其初始化一次(在您的CreateClient方法中没有using),然后就可以了.
标签: c# .net rest httpclient