方式一:
这篇文章介绍了如何使用 C# 中的 HttpClient 发出具有特定内容类型的 HTTP 请求。使用 HttpClient,您可以使用内置扩展方法PostAsJsonAsync或PostAsXmlAsync POST JSON 或 XML ,这将分别将内容类型设置为application/json和。下面是application/xml如何使用 POST JSON 的示例:PostAsJsonAsync
var httpClient = new HttpClient();
var jsonAsString = "{ \"text\":\"Some text\"}";
var response = await httpClient.PostAsJsonAsync("/someurl", jsonAsString);
上面的代码还可以将对象作为参数而不是字符串,使用字符串是为了简单起见。如果您希望使用不同于 JSON 和 XML 的内容类型发出请求,则可以将StringContent与基本PutAsync或PostAsync结合使用。下面是内容类型为 的 StringContent 的示例text/plain:
var httpClient = new HttpClient();
var content = new StringContent("This is plain text!", Encoding.UTF8, "text/plain");
var response = await httpClient.PostAsync("/someurl", content);
使用 JSON 执行相同操作的等效且详细的方法如下,由于第一个代码示例中的扩展方法,这是不必要的:
var httpClient = new HttpClient();
var jsonAsString = "{ \"text\":\"Some text\"}";
var jsonContent = new StringContent(jsonAsString, Encoding.UTF8, "application/json");
var response = await httpClient.PostAsync("/someurl", jsonContent);
方式二:
请注意,下面的示例在两个地方添加了“application/json”——用于 Accept 和 Content-Type 标头。
var client = new HttpClient();
client.BaseAddress = new Uri("http://example.com/");
// ACCEPT header
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
var request = new HttpRequestMessage(HttpMethod.Post, "relativeAddress");
// CONTENT-TYPE header
request.Content = new StringContent("{\"name\":\"John Doe\",\"age\":33}",
Encoding.UTF8, "application/json");
client.SendAsync(request).ContinueWith(responseTask =>
Console.WriteLine("Response: {0}", responseTask.Result); );
如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天。