【发布时间】:2019-02-25 09:53:07
【问题描述】:
我正在使用 C# 代码调用 API。
我有一个具有 GET 方法的 API 类。 (我承认我从同事那里得到了代码并刚刚对其进行了修改)。
ProcessRequest 方法从 WebRequest 获取响应并将其存储在名为 feed 的变量中
当我使用文本可视化器查看返回的内容时,我看到 item 键值对的值为 -0.0。
不幸的是,当我使用 Newtonsoft 反序列化为我定义的类时,这会出错,因为该字段应该是整数。 注意:此时 NEWTONSOFT 返回的错误与我无关
当我使用 Postman 调用 API 时,这是我返回的结果...
您可以看到last KVP 返回一个整数值,这是预期的。
是否有人知道为什么我在 C# 代码中得到的响应与来自 Postman 的响应不同,以及我能做些什么?
总结:- C# 在该键值对的值中返回一个 -0.0 Postman 在该键值对的值中返回一个 0
由于 API 是付费服务,因此我无法发布与 API 相关的工作代码示例。
【问题讨论】:
-
返回不同值的并不是真正的“C#”。它是 API。大概它正在响应请求中的一些差异,例如用户代理标头。建议您向 API 提供者询问详情。
-
我的第一个猜测是 postman 将 -0 和 0 视为相同的值,而 C# .NET 函数返回实际响应。
-
如果你能提供一个minimal reproducible example(代码作为文本),那就太棒了。
-
@cometbill 使用 Fiddler 或其他调试代理来查看实际发送的内容以及 actual 响应是什么。您发布了解析后的 POSTMAN 响应的屏幕截图,而不是 raw HTTP 响应。也许这两个请求有区别?还是 POSTMAN 只是将十进制的 0 转换为整数 0?
-
@JonSkeet,是的,谢谢。我曾假设(可能是错误的)我的 C# 代码可能有问题,但是是的,Postman 可能正在解析结果。我会再次联系 API 提供商。
标签: c# json rest httpwebrequest webrequest