Sendi Ruby Net::HTTP POST tra prokurilo
Agordi Ruby HTTP-konekton kun eksplicita prokurilo, poste sendi formularajn datumojn al la celo.
Tenu la celon de la formularo en la peto kaj la prokurilon en la konekta agordo. Prokurilo ne bezonas specialan formularan kampon enhavantan la URL-on, kiun vi volas, krom se vi uzas la retprokurilan interfacon de aparta retejo.
Por Net::HTTP de Ruby, eksplicita HTTP-prokurilo povas esti donita kiam oni kreas la klienton:
require 'net/http'
uri = URI('https://example.com/form')
http = Net::HTTP.new(uri.hostname, uri.port,
'203.0.113.10', 8080)
http.use_ssl = true
http.open_timeout = 5
http.read_timeout = 10
request = Net::HTTP::Post.new(uri.request_uri)
request.set_form_data('message' => 'hello')
response = http.start { |session| session.request(request) }
La prokurilo estas ilustra; HTTP-kandidatoj por permesitaj testoj de publikaj formularoj haveblas en la listo de HTTP-prokuriloj. La finpunkto de la formularo devas esti anstataŭigita per servo destinita akcepti la sendon. La dokumentaro pri prokurilo de Net::HTTP ankaŭ priskribas prokurilajn akreditaĵojn kaj agordojn derivitajn de la medio.
Legu la respondon antaŭ ol kulpigi la prokurilon
Servilo, kiu rifuzas formularon, povas produkti HTTP-eraron post kiam la itinero tra la prokurilo funkciis ĝuste. Kontrolu la respondan staton kaj la postulojn de la celo: metodo, enhavtipo, formularaj kampoj, kuketoj kaj eventuala pettokeno.
Prokurila aŭtentikiga defio venas de la prokurilo. Aplikada ensaluto aŭ rifuzita formularo apartenas al la celo. Tenu iliajn akreditaĵojn aparte. Aldoni celan pasvorton al la prokurila agordo ne povas kontentigi la ensaluton de la celo.
La reguloj de Squid pri plusendaj kaplinioj estas alia ebla fonto de konfuzo. Ilia servila politiko estas aparta de konstruado de valida Ruby POST. Ne ŝanĝu la kapliniajn regulojn de komuna prokurilo nur ĉar la formularo malsukcesis unufoje.
Por reklopodoj, pripensu ĉu la unua sendo eble jam estis prilaborita. Perdita respondo ne pruvas, ke POST neniam atingis la aplikaĵon.