我想在put请求体中发送一组JSON对象。
JSON正文:
[
{
"a":1,
"b":2
},
{
"a":2,
"b":1
}
]
我正在使用HTTP :: put来发出请求。我将Json中的数据作为哈希发送。
put("url", data: json)
但是,这会导致问题,因为在客户端它被解码为:
[
"data":[{
"a":1,
"b":2
},
{
"a":2,
"b":1
}]
]
如何在没有哈希的情况下发送Json,或者在发送之前有没有办法从哈希值中获取值?
答案 0 :(得分:0)
尝试定义Content-Type
:
json_data = '[{"a":1,"b":2},{"a":2,"b":1 }]'
hash_body = JSON.parse json_data
uri = URI.parse('https://www.google.com/api/something')
request = Net::HTTP::Put.new(uri.request_uri, 'Content-Type' => 'application/json')
request.body = hash_body
response = http.request(request)
干杯!
答案 1 :(得分:0)
由于内部设置了一些参数,我们无法使用HTTP :: Put.new。我们通过在Her库中添加一个方法来解决它,而该方法又使用Faraday来发出请求。我发布了这里使用的方法。
response = self.use_api.connection.put do |req|
req.url url
req.headers['Content-Type'] = 'application/json'
req.body = json
end
我不确定这是否是最好的方法。