Ich habe Seite mit js, die Daten über XMLHttpRequest und serverseitige Skriptüberprüfung für diesen Header, wie dieser Header senden?Ruby mechanize Post mit Header
Antwort
Werfen Sie einen Blick auf die documentation.
Sie müssen entweder affe-patch oder eine eigene Klasse von WWW::Mechanize
ableiten, um die post
-Methode zu überschreiben, damit benutzerdefinierte Header an die private Methode post_form
übergeben werden.
Zum Beispiel
class WWW::Mechanize
def post(url, query= {}, headers = {})
node = {}
# Create a fake form
class << node
def search(*args); []; end
end
node['method'] = 'POST'
node['enctype'] = 'application/x-www-form-urlencoded'
form = Form.new(node)
query.each { |k,v|
if v.is_a?(IO)
form.enctype = 'multipart/form-data'
ul = Form::FileUpload.new(k.to_s,::File.basename(v.path))
ul.file_data = v.read
form.file_uploads << ul
else
form.fields << Form::Field.new(k.to_s,v)
end
}
post_form(url, form, headers)
end
end
agent = WWW::Mechanize.new
agent.post(URL,POSTDATA,{'custom-header' => 'custom'}) do |page|
p page
end
ich diesen Beitrag mit einer Web-Suche gefunden (zwei Monate später, ich weiß) und wollte nur eine andere Lösung teilen.
agent = WWW::Mechanize.new
agent.pre_connect_hooks << lambda { |p|
p[:request]['X-Requested-With'] = 'XMLHttpRequest'
}
VIEL eleganter! +1 –
Ich kam hierher, um nach einer Möglichkeit zu suchen, den Referer Header zu setzen. Mit _mechanize (2.3) _ bekomme ich den Fehler 'undefined Methode 'pre_connect_hooks' für nil: NilClass (NoMethodError)' – Marcos
@marcos: das würde vorschlagen, dass Ihr 'agent' Objekt aus irgendwelchen Gründen kein Nil ist. Kannst du das überprüfen? Sobald Sie das behoben haben, werden Sie feststellen, dass Mechanize 2.0 verschiedene Argumente für das Lambda verwendet - überprüfen Sie die neuesten Dokumente. –
ajax_headers = { 'X-Requested-With' => 'XMLHttpRequest', 'Content-Type' => 'application/json; charset=utf-8', 'Accept' => 'application/json, text/javascript, */*'}
params = {'emailAddress' => '[email protected]'}.to_json
response = agent.post('http://example.com/login', params, ajax_headers)
Der obige Code funktioniert für mich (Mechanize 1.0) als eine Möglichkeit, die machen:
Sie können benutzerdefinierte Header ohne Affe Patchen Mechanize mit einem Pre-Connect-Haken hinzufügen Server denken, die Anfrage kommt über AJAX, aber wie in anderen Antworten angegeben, hängt es davon ab, was der Server sucht, wird es für verschiedene Frameworks/js Bibliothek Combos unterschiedlich sein.
Das beste, was zu tun ist, verwenden Sie Firefox HTTPLiveHeaders Plugin oder HTTPScoop und schauen Sie sich die Anfrage Header vom Browser gesendet und versuchen Sie es einfach zu replizieren.
Scheint, wie frühere Versionen von Mechanize dass Lambda ein Argument hatte, aber jetzt hat es zwei:
agent = Mechanize.new do |agent|
agent.pre_connect_hooks << lambda do |agent, request|
request["Accept-Language"] = "ru"
end
end
- 1. versuchen, mit Ruby mechanize
- 2. Erkennen Redirect mit Ruby Mechanize
- 3. Ruby Mechanize: Benutzeragenten?
- 4. Ruby https POST mit Kopfzeilen
- 5. Mechanize Iconv :: IllegalSequence beim Versuch, eine POST-Abfrage zu erstellen
- 6. Wie setze ich den Referer Header, bevor ich eine Seite mit Ruby Mechanize lade?
- 7. Python senden POST mit Header
- 8. Store-Login-Session-Cookie im Browser mit Ruby Mechanize
- 9. Installieren Sie Mechanize mit Ruby 2.3 auf Windows 7 Fehler
- 10. http Post-Header
- 11. Rubin Mechanize https Fehler
- 12. Angular2/Http (POST) Header
- 13. getaddrinfo Fehler mit Mechanize
- 14. Mechanize & Sinatra Konflikt
- 15. Fehler beim Ruby-Juwel Mechanize auf AWS Linux Installation
- 16. Mechanize wird nicht auf Seite
- 17. HTTP 403 Fehler Abrufen robots.txt mit mechanize
- 18. Ruby Mechanize liefert keine Javascript Seite korrekt zurück
- 19. So senden Sie WebDAV-Header mit Ruby?
- 20. JQuery AJAX-Header Authorization POST
- 21. Angular2 RC1, HTTP-POST-Header
- 22. Ruby http-Post mit leerem Pfad
- 23. Ruby on Rails Webdienste mit POST-Anfrage
- 24. HTTP-POST: Inhaltslänge Header erforderlich?
- 25. PHP - HTTP Post - falsche Header
- 26. Ignore Iconv :: IllegalSequence bei der Verwendung von Ruby WWW :: Mechanize
- 27. Wie fügt man dem Ruby Mechanize-Juwel JS-Unterstützung hinzu?
- 28. Upload-Datei mit Python Mechanize
- 29. Fehler mit Pythons mechanize Modul
- 30. Installation von Mechanize mit easy_install
Welche Header für die serverseitige Skript sucht? Es kann variieren. Zum Beispiel glaube ich in Rails, dass _method gesucht wird, aber das wird nicht unbedingt der Fall sein, egal welches PHP-Skript Sie schlagen. –
Ich denke, Sie müssen eine Antwort akzeptieren AnimalCode ... – Kris