Purtroppo non ho molta esperienza con la pubblicazione di documenti (ad esempio XML) su server Web, quindi mi scuso se manca la mia comprensione di HTTP.Utilizzo di Ruby per inviare una richiesta XML a un server web
Ho un server Web di base Mongrel installato in un'app rubino su 127.0.0.1
porta 2000
. (Il server).
Sto eseguendo un'app Ruby separata sullo stesso computer. (Il cliente).
Ho bisogno che il client POST un documento XML al server.
Ho provato a utilizzare Net :: HTTP per eseguire questa operazione, ma non riesco a trovare un chiaro esempio che indichi cosa dovrei fare. Ho avuto un tentativo, ma ho riscontrato errori. Ho rotto la richiesta verso il basso per rendere il più semplice possibile:
http = Net::HTTP.new("127.0.0.1", 2000)
http.post('file', 'query=foo') #xc.rb line 6
ma provoca il seguente errore
C:/Ruby193/lib/ruby/1.9.1/net/protocol.rb:141:in `read_nonblock': An existing connection was forcibly closed by the remote host. (Errno::ECONNRESET)
from C:/Ruby193/lib/ruby/1.9.1/net/protocol.rb:141:in `rbuf_fill'
from C:/Ruby193/lib/ruby/1.9.1/net/protocol.rb:122:in `readuntil'
from C:/Ruby193/lib/ruby/1.9.1/net/protocol.rb:132:in `readline'
from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:2562:in `read_status_line'
from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:2551:in `read_new'
from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:1319:in `block in transport_request'
from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:1316:in `catch'
from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:1316:in `transport_request'
from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:1293:in `request'
from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:1286:in `block in request'
from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:745:in `start'
from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:1284:in `request'
from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:1307:in `send_entity'
from C:/Ruby193/lib/ruby/1.9.1/net/http.rb:1096:in `post'
from W:/Ruby/A/xc.rb:6:in `<main>'
immagino lo sto facendo tutto sbagliato. Per favore, puoi darmi un esempio (o indicarmi un tutorial) che dovrebbe permettermi di pubblicare alcuni dati di base, come "<tag1>text</tag1>"
. Spero di essere in grado di elaborare le intestazioni appropriate e gestire la risposta.
Inoltre, non è necessario utilizzare net/http; qualsiasi metodo gratuito che non sia dotato di restrizioni di licenza per uso commerciale extra va bene.
Si sta tentando di eseguire il debug del cliente. Ma hai dimostrato che il server funziona correttamente? –
Accedo allo stesso URL tramite un browser web e il server esegue correttamente 'p' sulla richiesta (non l'ho ancora impostato per fare nient'altro). Durante la connessione tramite client, il server segnala che sta ricevendo una richiesta HTTP non corretta. Errore di analisi HTTP, richiesta non corretta (127.0.0.1): # '. Sono abbastanza sicuro che è solo che non so come postare correttamente i dati sul server. Se riesco a scoprire come dovrei farlo, posso eseguire il debug da lì, se necessario. –
SimonMayer