Ruby Net::HTTP POST 发送压缩数据

3

我正在使用JRUBY 1.9.2中的Net::HTTP::Post将数据发送到自定义服务器(不是Web服务器),该服务器希望数据以gzip压缩。

我该如何告诉Net::HTTP::Post对其要POST的数据进行gzip压缩?


你尝试过什么?你在哪里搜索过?现在的情况是,你要求我们为你编写教程,而这些教程已经存在了。 - the Tin Man
@theTinMan Ruby文档中的Net::HTTP::POST没有提到压缩。 - aaa90210
1
你需要使用Zlib来压缩数据,并添加Content-Encoding: gzip头部。据我所知,这些都不是特定于Net::HTTP::POST的。 - Amadan
你解决了这个问题吗?我在 jruby 9.0.5.x 上也遇到了类似的问题。 - Richardsondx
1个回答

4

JSON发布示例:

require('zlib')
require('net/http')
require('json')

data = {my: 'data'}
uri = URI('http://example.com/api/endpoint')

headers = {
  'Content-Type' => 'application/json',
  'Content-Encoding' => 'gzip',
}
request = Net::HTTP::Post.new(uri, headers)

gzip = Zlib::GzipWriter.new(StringIO.new)
gzip << data.to_json
request.body = gzip.close.string

response = Net::HTTP.start(uri.hostname, uri.port) do |http|
  http.request(request)
end

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接