在升级 .NET 框架之前,我有一个运行良好的控制台应用程序。控制台应用程序调用 Web API。它曾经使用 Newtonsoft.Json。由于 System.Net.Http.dll (.NET 4.5.2) 中不再有PostAsJsonAsync方法,因此必须替换 PostAsJsonAsync:
HttpResponseMessage responseMessage = await client.PostAsJsonAsync(url, myRequest);
根据HttpClient 不支持 PostAsJsonAsync 方法 C#的解决方案(而不是遵循接受的答案,我遵循用户评论的第二高投票答案应该是接受的答案),我试图用PostAsync替换它:
var values = new Dictionary<string, string>
{
{ "myRequestNo", myRequest.requestNo.ToString() },
{ "myImage", myRequest.image },
};
var json = JsonConvert.SerializeObject(values, Formatting.Indented);
var stringContent = new StringContent(json);
client.BaseAddress = new Uri(url);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
var response = await client.PostAsync(url, stringContent);
var responseString = await response.Content.ReadAsStringAsync();
我可以看到以下标头已成功添加到请求中:
尽管添加了此标头,但我收到以下错误:
此资源不支持请求实体的媒体类型“text/plain”
我错过了什么?
