gpt4 book ai didi

ruby - Zip(不是 gzip)Ruby HTTPResponse

转载 作者:数据小太阳 更新时间:2023-10-29 08:50:52 24 4
gpt4 key购买 nike

我使用的网络服务响应以 zip 格式(而非 gzip)压缩的 XML。我知道 Ruby 会自动解压缩 gzip 格式的响应,但我正在使用的服务没有 gzip 格式。

这是我用来获取服务响应的代码:

require 'net/http'
require 'uri'
require 'nokogiri'

xml = Nokogiri::XML::Builder.new do |xml|
xml.method {
xml.param1 'value1'
xml.param2 'value2'
}
end

url = URI.parse('http://url.to.webservice/')
request = Net::HTTP::Post.new(url.path)
request.content_type = 'text/xml'
request.body = xml.to_xml

response = Net::HTTP.new(url.host, url.port).start { |http| http.request(request) }

case response
when Net::HTTPSuccess, Net::HTTPRedirection
# Decompress Zip response
else
puts "Request error."
end

是否有使用 Ruby 解压缩 Zip 响应的内置方法?谢谢!

最佳答案

这个解决方案非常丑陋,因为它使用临时文件。但是我找不到更好的方法来处理 ruby​​ 中的 .zip 文件:-\确保使用 gem install ruby​​zip 安装 ruby​​zip gem,然后将其作为 require 'zip/zip'

  t=Tempfile.new('1.xml.zip')
File.open(t.path, 'w') do |f|
f.write response.body
end

Zip::ZipFile.open(t.path) do |files|
files.each do |file|
puts Nokogiri::XML.parse(file.get_input_stream)
end
end
t.delete

用这段代码代替你的评论;)

关于ruby - Zip(不是 gzip)Ruby HTTPResponse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13416201/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com