使用 HTTP Party 将 JSON 发送到 Web API
本文关键字:Web API JSON HTTP Party 使用 | 更新日期: 2023-09-27 17:57:03
我正在使用http party gem尝试将一些json发送到我在Visual Studio中运行的Web api。
我的 Post API 的 C# 实现如下所示:
public string GetInfo([FromBody]MyClass[] postedValues)
{
//do stuff
如果我配置提琴手来点击方法并在提琴手内将请求标头设置为:
Content-Type: application/json; charset=utf-8
然后请求正文为:
[{"Id" : "1", "A" : "1", "B" : "1", "c" : "1"}, {"Id" : "2", "A" : "2", "B" : "2", "C" : "2"}]
当我点击执行时,postedValues
会自动将 JSON 中的值映射到数组中 - 因此对于上述内容,数组中将有 2 个元素 - MyClass postedValues[0]
中的Id
将被1
,postedValues[1]
中的Id
将被2
,并且所有其他属性都相同。
我想从Ruby on Rails访问WebAPi,所以我使用http party并构建如下请求(注意完整 http://从URL中删除):
post('localhost/api/MyController/GetInfo', :body => [{:Id => '1',
:A => '1',
:B => '1',
:C => '1'}].to_json,
:headers => {'Content-Type' => 'application/json'})
但是现在,如果我在 C# 方法中放置断点postedValues
则为 null。 如果我将 C# 方法更改为:
public string GetInfo([FromBody]dynamic postedValues)
{
//do stuff
并运行 Ruby 代码,我确实看到传递的值,但更希望这些值像我从 Fiddler 点击它时那样自动映射 - 我在 http party 上做了什么不正确的事情吗?
我最终将请求正文拉出到类级变量中,它按预期映射值 - 希望这对其他人有用。
@request_body = [{:Id => '1',
:A => '1',
:B => '1',
:C=> '1'}]
post('localhost:50544/api/MyController/GetInfo', :body => @request_body.to_json,
:headers => {'Content-Type' => 'application/json'})