Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用C#将JSON发布到HttpClient?_C#_Json_Asynchttpclient - Fatal编程技术网

如何使用C#将JSON发布到HttpClient?

如何使用C#将JSON发布到HttpClient?,c#,json,asynchttpclient,C#,Json,Asynchttpclient,我不知道如何在HttpClient中发布JSON。我找到了一些解决方案,但我必须使用HttpClient,这是异步的原因,并且必须添加一个头 下面是我的代码。知道怎么修吗 List<Order> list = new List<Order> { new Order() { Name = "CreatedTime", OrderBy = 1 } }; Queues items = new Queues { Orders = list }; var values = ne

我不知道如何在HttpClient中发布JSON。我找到了一些解决方案,但我必须使用HttpClient,这是异步的原因,并且必须添加一个头

下面是我的代码。知道怎么修吗

List<Order> list = new List<Order> { new Order() { Name = "CreatedTime", OrderBy = 1 } };

Queues items = new Queues { Orders = list };

var values = new Dictionary<string, string> { { "Orders", JsonConvert.SerializeObject(list) } };

var content = new FormUrlEncodedContent(values);

//HttpContent cc = new StringContent(JsonConvert.SerializeObject(items));

_msg = await _client.PostAsync(input, content);

//_msg = await _client.PostAsync(input, cc);

var response = await _msg.Content.ReadAsStringAsync();
List List=newlist{neworder(){Name=“CreatedTime”,OrderBy=1};
队列项目=新队列{订单=列表};
var values=newdictionary{{“Orders”,JsonConvert.SerializeObject(list)};
var内容=新的FormUrlEncodedContent(值);
//HttpContent cc=newstringcontent(JsonConvert.SerializeObject(items));
_msg=wait_client.PostAsync(输入,内容);
//_msg=wait_client.PostAsync(输入,抄送);
var response=await_msg.Content.ReadAsStringAsync();
您可以使用扩展程序集中的方法:

System.Net.Http.Formatting.dll
范例

public static async Task SendJsonDemo(object content)
{
    using(var client = new HttpClient())
    {
        var response = await client.PostAsJsonAsync("https://example.com", content);
    }
}
如果要向请求添加自定义标题,请将其添加到
DefaultRequestHeaders

client.DefaultRequestHeaders.Add("mycustom", "header1");

您可以发送任何类型的请求,如

public static async Task<HttpResponseMessage> SendRequest(HttpMethod method, string endPoint, string accessToken,  dynamic content = null)
        {
            HttpResponseMessage response = null;
            using (var client = new HttpClient())
            {
                using (var request = new HttpRequestMessage(method, endPoint))
                {
                    request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                    request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
                    if (content != null)
                    {
                        string c;
                        if (content is string)
                            c = content;
                        else
                            c = JsonConvert.SerializeObject(content);
                        request.Content = new StringContent(c, Encoding.UTF8, "application/json");
                    }

                    response = await client.SendAsync(request).ConfigureAwait(false);
                }
            }
            return response;

        }
公共静态异步任务SendRequest(HttpMethod方法,字符串端点,字符串accessToken,动态内容=null)
{
HttpResponseMessage响应=null;
使用(var client=new HttpClient())
{
使用(var请求=新的HttpRequestMessage(方法,端点))
{
request.Headers.Accept.Add(新的MediaTypeWithQualityHeaderValue(“application/json”);
request.Headers.Authorization=新的AuthenticationHeaderValue(“承载者”,accessToken);
如果(内容!=null)
{
字符串c;
if(内容为字符串)
c=含量;
其他的
c=JsonConvert.SerializeObject(内容);
request.Content=newstringcontent(c,Encoding.UTF8,“application/json”);
}
response=await client.sendaync(请求).ConfigureAwait(false);
}
}
返回响应;
}

我记得我读过一篇文章,说你不应该每次调用都实例化一个HttpClient。