包含多个参数和一个主体的Ruby HTTP Post

包含多个参数和一个主体的Ruby HTTP Post,ruby,http,post,Ruby,Http,Post,我需要使用三个参数和一个由512字节组成的正文发布。我可以得到正确的身体,但我似乎不能得到参数采取: require 'net/http' @ip_address = Array['cueserver.dnsalias.com'] @cueserver = 0 @playback = 'p1' def send_cuescript(data) params = {'id' => '1', 'type' => "20",'dst' => 'RES' } beg

我需要使用三个参数和一个由512字节组成的正文发布。我可以得到正确的身体,但我似乎不能得到参数采取:

require 'net/http'

@ip_address = Array['cueserver.dnsalias.com']
@cueserver = 0
@playback = 'p1'

def send_cuescript(data) 

  params = {'id' => '1', 'type' => "20",'dst' => 'RES'  }

  begin
    url = URI.parse('http://'+ @ip_address[@cueserver] + '/set.cgi')
    http = Net::HTTP.new(url.host, url.port)

    response, body = http.post(url.path, params, data)

   rescue Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, EOFError,
          Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError => e
   end        
 response_array = []
 puts 'got this value: ' + response.to_s
 response.body.each_byte { |e| response_array.push(e.to_s(16))}
end

data_array = Array.new(512, "\x80")
send_cuescript(data_array.join)

我从initialize_http_头中得到一个错误。我知道必须有一种方法来分别设置参数和正文,但我似乎找不到任何与此相关的参考。

为什么必须在url中发送部分参数,在正文中发送部分参数? 如果你必须这样做,试试看

url=URI.parse('http://'+@ip_address[@cueserver]+'/set.cgi?'+params.to_param)


PS:to_参数来自主动支持。如果您没有使用主动支持,您需要自己编写。

谢谢Dean,我会尝试一下。我将尝试回答为什么的问题。这是为实时灯光播放和控制而设计的旧设备。开发人员开发了一个API,该API以最有效的方式管理内存和存储数据为基础。他的另一个UI软件使用Obj-C,我相信Obj-C的post方法级别较低,他没有遇到这个问题。他似乎把所有的东西都像这样串在一起:
512字节这里
,这对他很有用。在ruby上似乎不起作用…