Obawiam się, że nie mam dużego doświadczenia z publikowaniem dokumentów (np. XML) na serwerach internetowych, więc przepraszam, jeśli brakuje mi mojego zrozumienia HTTP.Używanie Ruby do publikowania żądania XML na serwerze internetowym
Mam podstawowy serwer WWW firmy Mongrel skonfigurowany w aplikacji Ruby pod numerem 127.0.0.1
port 2000
. (Serwer).
Używam oddzielnej aplikacji Ruby na tym samym komputerze. (Klient).
Potrzebuję klienta, aby opublikować dokument XML na serwerze.
Próbowałem użyć Net :: HTTP, aby to zrobić, ale nie mogę znaleźć wyraźnego przykładu, który mówi mi, co powinienem zrobić. Udało mi się, ale napotkałem błędy. Złamałem wniosek w dół, aby to tak podstawowe, jak to możliwe:
http = Net::HTTP.new("127.0.0.1", 2000)
http.post('file', 'query=foo') #xc.rb line 6
ale to prowadzi do następującego błędu
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>'
sobie wyobrazić robię to całkowicie błędne. Czy możesz podać mi przykład (lub wskazać mi samouczek), który powinien pozwolić mi opublikować podstawowe dane, takie jak "<tag1>text</tag1>"
. Mam nadzieję, że będę mógł opracować odpowiednie nagłówki i obsłużyć odpowiedź.
Ponadto nie potrzebuję używać net/http; każda bezpłatna metoda, która nie jest objęta dodatkowymi ograniczeniami licencyjnymi, jest w porządku.
próbujesz debugowania klienta. Ale czy udowodniłeś, że serwer działa poprawnie? –
Uzyskuję dostęp do tego samego adresu URL za pośrednictwem przeglądarki internetowej, a serwer prawidłowo wpisuje 'p' na żądanie (nie ustawiłem go jeszcze do zrobienia czegokolwiek innego). Podczas łączenia się z klientem serwer zgłasza, że odbiera błędne żądanie HTTP: Błąd analizy HTTP, nieprawidłowe żądanie (127.0.0.1): #
SimonMayer