我正在尝试从我的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);
}
答案 0 :(得分:2)
一旦HttpClient离开CreateClient方法中的using语句,它就会被处理掉。 删除CreateClient方法中的using语句,并在Execute方法中实现using使用
public async void Execute()
{
string query = $"<RequestData>" +
$"<firstField>{model.firstField}</firstField>" +
$"<secondField>{model.secondField}</secondField>" +
$"<thirdField>{model.thirdField}</thirdField>" +
$"</RequestData>";
using(HttpClient client = CreateClient())
{
HttpResponseMessage response = await SendRequest(client, HttpMethod.Put, query);
}
}
private HttpClient CreateClient()
{
var 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);
}