简体   繁体   English

RestSharp 到 HttpClient

[英]RestSharp to HttpClient

var client = new RestClient("http://10.0.0.244:8885/terminal/info");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddHeader("apikey", "adasdsadasd");
var body = @"{}";
request.AddParameter("application/json", body,  ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);

Could someone, please, help me write this code with HttpClient?有人可以帮我用 HttpClient 编写这段代码吗? I try following code.我尝试以下代码。

using (var client = new HttpClient())
{
    client.BaseAddress = new Uri("http://10.0.0.244:8885/");
    client.DefaultRequestHeaders.Accept.Clear();
    client.DefaultRequestHeaders.Clear();
    HttpRequestMessage request = new HttpRequestMessage();
    request.Method = HttpMethod.Post;
    request.RequestUri = new Uri($"{client.BaseAddress}/terminal/info");
    request.Headers.Add("apikey", "adasdsadasd");
    var body = Newtonsoft.Json.JsonConvert.SerializeObject(new { });
    request.Content = new StringContent(body, Encoding.UTF8, "application/json");//CONTENT-TYPE header
    request.Content.Headers.Clear();
    request.Content.Headers.ContentLength = 2;
    request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
    HttpResponseMessage response = client.SendAsync(request).GetAwaiter().GetResult();
    var x = response.Content.ReadAsStringAsync().GetAwaiter().GetResult();

}

But it response with Status Code 400 (ParseError)但它响应状态码 400 (ParseError)

You can accomplish what you are trying to do with much less code.你可以用更少的代码完成你想要做的事情。 Also this should be in an async method.这也应该在异步方法中。 Below is an example下面是一个例子

internal async Task<string> GetResponse()
{
    using var client = new HttpClient();
    client.BaseAddress = new Uri("http://10.0.0.244:8885/");
    client.DefaultRequestHeaders.Clear();
    client.DefaultRequestHeaders.Add("apikey", "adasdsadasd");
    var content = new StringContent("{}", Encoding.UTF8, "text/plain");
    var response = await client.PostAsync("/terminal/info", content);
    if (response.IsSuccessStatusCode)
    {
        return await response.Content.ReadAsStringAsync();
    }
    return null;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM