Mit Open-URI zum abrufen von XML und die beste Praxis im Falle von Problemen mit einer remote-url nicht die Rückgabe oder das timing aus?
Aktuellen code funktioniert, solange es keine remote-Fehler:
def get_name_from_remote_url
cstr = "http://someurl.com"
getresult = open(cstr, "UserAgent" => "Ruby-OpenURI").read
doc = Nokogiri::XML(getresult)
my_data = doc.xpath("/session/name").text
# => 'Fred' or 'Sam' etc
return my_data
end
Aber was ist, wenn das remote-URL-Timeout oder nichts zurückgibt? Wie ich erkennen, dass und return nil, zum Beispiel?
Und ist Open-URI geben, einen Weg zu definieren, wie lange zu warten, bevor Sie aufgeben? Diese Methode wird aufgerufen, während ein Benutzer auf eine Antwort warten, so wie wir setzen eine max timeoput Zeit, bevor wir aufgeben und dem Benutzer sagen "sorry der remote-server auf dem wir versucht haben, den Zugang nicht verfügbar ist"?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Open-URI ist bequem, aber, die Benutzerfreundlichkeit bedeutet, dass Sie entfernen den Zugriff auf viele der details zur Konfiguration der anderen HTTP-clients wie Net::HTTP zulassen.
Es hängt davon ab, welche version von Ruby, die Sie verwenden. Für 1.8.7 können Sie die Timeout Modul. Aus den docs:
Dann überprüfen Sie die Länge der getresult, um zu sehen, wenn Sie irgendwelche Inhalte:
Wenn Sie mit Ruby 1.9.2 können Sie ein
:read_timeout => 10
option, um dieopen()
Methode.Außerdem könnte der code nachgezogen werden und etwas flexibler. Dies wird Ihnen erlauben, übergeben Sie eine URL oder standardmäßig auf die aktuell verwendete URL. Lesen Sie auch Nokogiri ist NodeSet docs zu verstehen, den Unterschied zwischen
xpath
,/
,css
undat
,%
,at_css
,at_xpath
: