我需要以xml的形式发送请求。
uri =URI('https://fs.example.com:8443/services/trust/13/usermixed')
http = Net::HTTP.new(uri)
request = Net::HTTP::Post.new(uri)
request['Content-Type'] = 'application/soap+xml; charset=UTF-8'
request.body = @body(as xml)
response = http.request(request)
当向方法末尾的 uri 发送请求时,Net::HTTP::Post.new
会 Hook 端口 80,结果会在 https 上建立一个连接://fs.example.com:8443/services/trust/13/usermixed:80
这会导致错误 SocketError: 无法打开与 https://fs.example.com:8443/的 TCP 连接services/trust/13/usermixed:80(getaddrinfo:名称或服务未知)
类似的问题可以通过方法 Net::HTTP.post_form(uri, data)
解决,最后没有端口......但它只需要通过哈希值获取日期。我需要将 request.body 发送到 XML
谢谢!
最佳答案
当您想要启动新的 http
session 时,我们只使用基本 URL,并将请求发送到纯 URL
uri = URI('https://fs.example.com:8443/services/trust/13/usermixed')
http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Post.new(uri.to_s)
request['Content-Type'] = 'application/soap+xml; charset=UTF-8'
request.body = @body(as xml)
response = http.request(request)
然后请求应该按预期工作。
关于ruby-on-rails - Net::HTTP 发送请求 xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48002063/