如何在 Ruby 中使用 Post 请求发送 XML 文件
How to send XML file using Post request in Ruby
我正在编写发送 http post 请求的代码。现在我在我的代码中写了 xml body,它工作正常。
但是如果我想使用 xml 文件发送请求,我会得到
# 的未定义方法“bytesize”
你的意思?字节
下面是我的代码
require 'net/http'
request_body = <<EOF
<xml_expamle>
EOF
uri = URI.parse('http://example')
post = Net::HTTP::Post.new(uri.path, 'content-type' => 'text/xml; charset=UTF-8')
post.basic_auth 'user','passcode'
Net::HTTP.new(uri.host, uri.port).start {|http|
http.request(post, request_body) {|response|
puts response.body
}
}
**But if I want to make send file**
require 'net/http'
request_body = File.open('example/file.xml')
uri = URI.parse('http://example')
post = Net::HTTP::Post.new(uri.path, 'content-type' => 'application/xml; charset=UTF-8')
post.basic_auth 'user','passcode'
Net::HTTP.new(uri.host, uri.port).start {|http|
http.request(post, request_body) {|response|
puts response.body
}
}
我明白了
# 的未定义方法“bytesize”
你的意思?字节
作为请求体需要将文件内容加载到内存,使用#read
方法:
request_body = File.open('example/file.xml').read
它会起作用。
我正在编写发送 http post 请求的代码。现在我在我的代码中写了 xml body,它工作正常。
但是如果我想使用 xml 文件发送请求,我会得到
# 的未定义方法“bytesize”
你的意思?字节
下面是我的代码
require 'net/http'
request_body = <<EOF
<xml_expamle>
EOF
uri = URI.parse('http://example')
post = Net::HTTP::Post.new(uri.path, 'content-type' => 'text/xml; charset=UTF-8')
post.basic_auth 'user','passcode'
Net::HTTP.new(uri.host, uri.port).start {|http|
http.request(post, request_body) {|response|
puts response.body
}
}
**But if I want to make send file**
require 'net/http'
request_body = File.open('example/file.xml')
uri = URI.parse('http://example')
post = Net::HTTP::Post.new(uri.path, 'content-type' => 'application/xml; charset=UTF-8')
post.basic_auth 'user','passcode'
Net::HTTP.new(uri.host, uri.port).start {|http|
http.request(post, request_body) {|response|
puts response.body
}
}
我明白了 # 的未定义方法“bytesize” 你的意思?字节
作为请求体需要将文件内容加载到内存,使用#read
方法:
request_body = File.open('example/file.xml').read
它会起作用。