我正在使用System.Net.Http的HttpClient通过“POST”调用REST API
使用以下代码:
using (HttpRequestMessage requestMessage = new HttpRequestMessage(
HttpMethod.Post, new Uri(request)) { })
{
response = await httpClient.PostAsync(request, objectContent);
}
“objectContent”当前是这个-
objectContent = new ObjectContent(jsonContent.GetType(),
jsonContent,
new JsonMediaTypeFormatter());
我想知道如果这是StringContent而不是这样的ObjectContent有什么区别?
objectContent = new StringContent(content);
objectContent.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json");
两者都工作正常。因为它是JSON,所以我倾向于认为StringContent是有意义的。但是什么时候使用ObjectContent,因为几乎所有发送的内容都是“字符串”。
最佳答案
在您的示例中,没有任何区别。 ObjectContent
仅允许通过HttpClient
发送“更广泛”的类型范围,而StringContent
仅对于string
值(例如JSON)更窄。StringContent
是ByteArrayContent
的瘦包装,实际上存储了作为byte[]
传递的值。您只需获得不需要来回转换string
的好处。
编辑:
考虑到您发布的是JSON,您甚至可以通过使用 HttpClientExtensions.PostAsJsonAsync<T>
使其变得不那么冗长:
await httpClient.PostAsJsonAsync(url, json);