Ho un semplice server Rack Ruby, come:Come ricevere un oggetto JSON con rack
app = Proc.new do |env|
req = Rack::Request.new(env).params
p req.inspect
[200, { 'Content-Type' => 'text/plain' }, ['Some body']]
end
Rack::Handler::Thin.run(app, :Port => 4001, :threaded => true)
Ogni volta che inviare una richiesta HTTP POST al server con un oggetto JSON:
{ "session": {
"accountId": String,
"callId": String,
"from": Object,
"headers": Object,
"id": String,
"initialText": String,
"parameters": Object,
"timestamp": String,
"to": Object,
"userType": String } }
Non ricevo nulla. Posso rilevare la richiesta ricevuta ma non posso ottenere i dati. I risultati a mia console per puts req.inspect
è qualcosa di simile:
"{}"
Come faccio a ottenere i dati?
ho cercato di cambiare la situazione con qualcosa di simile:
request = Rack::Request.new env
object = JSON.parse request.body
puts JSON.pretty_generate(object)
Ma sto ottenendo il seguente avviso:
!! Unexpected error while processing request: can't convert StringIO into String
Che un esempio di JSON viene inviato? – tadman
nulla inviato, JSON viene ricevuto qualcosa come esempio di cui sopra con la radice sessione – Eqbal
Ok sembra che dovrei usare qualcosa come:. msg = JSON.parse env [ 'rack.input'] leggi Poi basta usare params in msg hash, almeno mi ha funzionato in questo modo – Eqbal