【发布时间】:2019-04-26 11:31:52
【问题描述】:
在其中一个 Net API 控制器中,我有一个将请求发送到另一个第三方 API 的操作,在收到响应后,它会对收到的 JSON 数据进行一些操作,最后将响应返回给前端应用程序。示例代码如下:
using (var client = new HttpClient())
{
var response = await client.GetAsync(_remoteServiceEndPoint + "student/" + id);
if (response.IsSuccessStatusCode)
{
var contentString = await response.Content.ReadAsStringAsync();
//do something with contents and finally return response to the caller
}
}
现在,如果第三方发送一个 JSON 响应,其中包含一个像 999999999999999.99 这样的数字,并且在上面的代码 sn-p 中执行 ReadAsStringAsync,它会将值更改为 10000000000000000。我不想要。
我想知道为什么ReadAsStringAsync 会这样。
【问题讨论】:
-
您确定是调用
ReadAsStringAsync()导致了问题吗?我怀疑这可以正常工作,但是在使用 NewtonSoft 反序列化字符串时会遇到问题。 -
这听起来像是一个应该在 corefx 存储库中报告的错误,但我同意 Jesse - 我看不出
ReadAsStringAsync需要或想要修改它正在检索的数据的任何理由. -
@JessedeWit 我的错。是
JObject.Parse(contentString)导致了这个问题。 -
@AJQarshi 太好了,我在过去写的所有对
ReadAsStringAsync的调用都汗流浃背。
标签: c# dotnet-httpclient