使用 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将被1postedValues[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 上做了什么不正确的事情吗?

使用 HTTP Party 将 JSON 发送到 Web API

我最终将请求正文拉出到类级变量中,它按预期映射值 - 希望这对其他人有用。

  @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'})