Je dois poster en utilisant trois paramètres et un corps qui se compose de 512 octets. Je peux obtenir le droit du corps, mais je ne peux pas sembler obtenir les paramètres à prendre:Ruby HTTP Post contenant plusieurs paramètres et un corps
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)
Je reçois une erreur de la initialize_http_header. Je sais qu'il doit y avoir un moyen de définir séparément les paramètres et le corps, mais je ne trouve aucune référence à cela.
Merci Dean, je vais essayer. Je vais essayer de répondre à la question pourquoi. Ceci est un dispositif plus ancien conçu pour la lecture et le contrôle de l'éclairage en temps réel. Le développeur a développé une API basée sur la gestion de la mémoire et le stockage des données de la manière la plus efficace possible. Son autre logiciel d'interface utilisateur utilise Obj-C et je crois que la méthode post pour Obj-C est de niveau inférieur et il n'a pas rencontré ce problème. Il semble juste de tout enchaîner comme ceci: http: //url/set.cgi? Dst = RES & type = 11 & id = 1 & '512_bytes_here' et cela fonctionne pour lui. Ça ne semble pas marcher sur ruby ... – tsugua