2015-05-31 175 views
1

我正尝试在Ruby中向通过Microsoft Machine Learning Studio发布的API编写POST请求。我返回错误400与以下内容:带有JSON主体的Ruby POST请求

require 'unirest' 
require 'json' 

uri = "https://ussouthcentral.services.azureml.net/workspaces/a0e65d42d21c423fa4027d98f6ad364f/services/0d797f1b26d4410cae35c50d25d1c7cd/execute?api-version=2.0&details=true" 
apikey = "some api key" 
params = {some json body} 
response = Unirest.post(uri, headers: {"content_length" =>"235", "content-type" => "application/json", "authorization" => "Bearer" + " " + apikey}, parameters: params) 

对于我的生活,我无法弄清楚如何构造这个请求。根据文件:

授权:持票人abc123

必填。将API密钥传递给此处。从API的发布者获取此密钥。

内容长度

必填。内容正文的长度。

内容类型:应用/ JSON

如果请求体在JSON格式发送必需。

接受:application/json

可选的。使用标题以JSON格式接收响应。

我对Ruby不是很好,但是当我使用时,我的文本编辑器似乎不喜欢它:在标题和值之间而不是=>。

的身体,我需要在请求中包含如果显示这样的文档中:

{ 
    "Inputs": {"input1": { 
     "ColumnNames": [ 
     "Case Number", 
     "Case Type", 
     "Address", 
     "Description", 
     "Case Group", 
     "Date Case Created", 
     "Last Inspection Date", 
     "Last Inspection Result", 
     "Status", 
     "Permit and Complaint Status URL", 
     "Latitude", 
     "Longitude", 
     "Location" 
     ], 
     "Values": [ 
     [ 
      "0", 
      "value", 
      "value", 
      "value", 
      "value", 
      "", 
      "", 
      "value", 
      "value", 
      "value", 
      "0", 
      "0", 
      "value" 
     ], 
     [ 
      "0", 
      "value", 
      "value", 
      "value", 
      "value", 
      "", 
      "", 
      "value", 
      "value", 
      "value", 
      "0", 
      "0", 
      "value" 
     ] 
     ] 
    } 
    }, 
    "GlobalParameters": {}} 

每次我扔在编辑器中,并尝试运行该脚本,我得到各种错误。意想不到,期待结束,等等......

任何人都可以请解释我在做什么错在这里?

+0

unirest明确usess:标题名称和内容之间,使用第三方库时要小心,因为你需要仔细阅读他们的文档:这是unirest的RUBY http://unirest.io/ruby.html –

回答

0

已解决!

response = Unirest.post uri, headers:{"content-length" => "500", "content-type" => "application/json", "authorization" => "Bearer" + " " + apikey}, parameters: {"Inputs" => {"input1" => {"ColumnNames" => ["Case Number", "Case Type", "Address", "Description", "Case Group", "Date Case Created", "Last Inspection Date", "Last Inspection Result", "Status", "Permit and Complaint Status URL", "Latitude", "Longitude", "Location"], "Values" => [["0", "value","value","value","value","", "","value","value","value","0", "0", "value"],["0", "value","value","value","value","", "","value","value","value","0", "0", "value"]]}}, "GlobalParameters" => {}}.to_json 

TL; DR

只好巢嵌套几个散列内的阵列内的阵列。

0

尝试.to_json后你的散列。即{"content_length" =>"235"}.to_json and params.to_json

+0

的链接所以我在编辑器中仍然出现错误,说to_json的语法不正确。 –