我正在尝试通过Ruby实现Curl补丁请求。 Curl请求如下所示:
curl https://mywebsite/test/plan \
-X PATCH \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer {myJWT}' \
-d '{
"CheckOrNot": "N",
"CheckList": [
{
"id": "123"
},
{
"id": "234"
}
]
}'
运行Curl命令时,我可以得到:
400错误的请求。
但是当我尝试使用Ruby发出如下请求时:
require 'net/http'
require 'uri'
require 'json'
uri = URI.parse("https://mywebsite/test/plan")
request = Net::HTTP::Patch.new(uri)
request.content_type = "application/json"
request["Authorization"] = "Bearer {myJWT}"
request.body = JSON.dump({
"CheckOrNot" => "N",
"plans" => [
{
"id" => "123"
},
{
"id" => "234"
}
]
})
req_options = {
use_ssl: uri.scheme == "https",
}
response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(request)
end
我将永远得到
502错误的网关:从上游服务器收到无效的响应\ n。
有人可以解释为什么会这样吗?我该如何解决?还有没有更好的方法在Ruby中实现Curl Patch要求?
答案 0 :(得分:0)
问题是我从Curl和net / HTTP客户端调用的IP地址不同。使用新的客户端限制并成功使用API。