我需要一个从一个应用程序到另一个应用程序的多部分http帖子,其中包括文件附件和嵌套的params哈希。我尝试使用适用于文件附件的HTTPClient
,但我无法使用params以嵌套格式发送。
data_params = Hash.new
data_params[:params] = Hash.new
data_params[:params][:f] = Hash.new
data_params[:params][:d] = Hash.new
data_params[:params][:d][:name] = "Mich"
data_params[:params][:d][:city] = "Ostin"
data_params[:params][:f][:event] = "Sundance"
http_client = HTTPClient.new
body = data_params[:params]
response = http_client.post('http://localhost:3030/receiver/receive_test_data/', body)
接收方app看到params为{"d"=>"nameMichcityOstin","f"=>"eventSundance"}
(哈希在嵌套级别上折叠成字符串)
我想知道这是对http帖子的限制还是我只是做错了什么。我之前使用过JSON,我知道它支持嵌套结构,但我不知道如何添加文件附件。我感谢任何建议或替代方法,这些建议或替代方法符合做这样的事情的“最佳实践”。
答案 0 :(得分:4)
如果使用Rails:
> {:a=>53,:b=>{:c=>7}}.to_query
=> "a=53&b[c]=7"
http://apidock.com/rails/ActiveSupport/CoreExtensions/Hash/to_query
答案 1 :(得分:0)
我不确定你使用的是哪个HTTPClient
库,所以我无法尝试这个,但是如果你使用这样的键怎么办
data_params[:params]['d[name]'] = "Mich"
data_params[:params]['d[city]'] = "Ostin"
即。 data_params[:params]
只是一个级别的哈希。
然后接收应用程序会将其解压缩到您期望的嵌套哈希值。