c# - HttpClient.PostAsJsonAsync 无一例外地被粉碎
问题描述
我正在尝试使用 HttpClient.PostAsJsonAsync 调用 api(POST 方法)。但是,它毫无例外地停在了 httpClient.PostAsJsonAsync 处。
源代码如下:
public static async Task<oResult> PostApi(string JSON_sObject, string sEnd_Url) {
oResult oResult = new oResult();
var Data = JsonConvert.DeserializeObject(JSON_sObject);
var Url = "http://localhost:44340/" + sEnd_Url;
HttpClient httpClient = new HttpClient();
try {
httpClient.DefaultRequestHeaders.Accept.Clear();
httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = await httpClient.PostAsJsonAsync(new Uri(Url), Data); // it stopped here
if (response.IsSuccessStatusCode)
{
var sResponse_content = await response.Content.ReadAsStringAsync();
return JsonConvert.DeserializeObject<oResult>(sResponse_content);
}
else
{
return oResult;
}
}
catch (Exception ex)
{
LogFile(ex);
return oResult;
}
}
如果源代码有任何问题,请告诉我。
谢谢
解决方案
你不应该尝试序列化反序列化两次
从您的代码中删除
var Data = JsonConvert.DeserializeObject(JSON_sObject);
并更换
HttpResponseMessage response = await httpClient.PostAsJsonAsync(new Uri(Url), Data);
有了这个
var content = new StringContent(JSON_sObject, Encoding.UTF8, "application/json");
var response = await client.PostAsync(sEnd_Url, content);
还修复了基本的httpclient地址
var baseUri= @"http://localhost:44340";
using HttpClient client = new HttpClient { BaseAddress = new Uri(baseUri) };
try {
推荐阅读
- php - 如何从 laravel nova 资源过滤器下拉列表中隐藏每页选项?
- symfony - 资产是从散列路径加载的,而不是从 manifest.json 加载的
- python - Django如何一次创建多个模型对象-共享除一个之外的所有值
- excel - 如何避免excel甘特图上不需要的持续时间?
- c# - C# - 为什么在 ZipArchive 到 FileStream 工作的地方,新的 ZipArchive 到 MemoryStream 会失败?
- c - 邮局管理
- animation - 我需要关于颤动动画的帮助
- kubernetes - 访问nodePort服务请求无响应
- android - Android NFC 在将两个 NFC 标签堆叠在一起并尝试扫描它们后崩溃
- vue.js - data() 函数是否旨在提供除保持反应属性之外的功能?