2012-11-09 19 views
7

Tôi sử dụng thư viện OpenURI.Thư viện Ruby Open-URI bị hủy bỏ trong mã lỗi 404 HTTP

object = open("http://example.com") 

Nếu http://example.com phản hồi mã máy chủ bằng 200 hoạt động của chương trình như tôi mong đợi. Nhưng nếu http://example.com mã phản hồi của máy chủ bằng 400 (hoặc khác) thì hủy tập lệnh bằng OpenURI :: HTTPError: 404 Not Found.
Tôi có thể tránh điều này nếu tôi sử dụng công cụ 'bắt đầu giải cứu' và xử lý 'ngoại lệ HTTPError'.
Đây có phải là cách chính xác không? Tôi có nên sử dụng thư viện Net/Http thay vì OpenURI để xử lý tất cả các trường hợp không?

Trả lời

6

Giải cứu OpenURI::HTTPError là hoàn toàn hợp lý. Xem câu trả lời này liên quan: https://stackoverflow.com/a/7495389/289274

Nhưng nếu bạn không muốn đối phó với xử lý ngoại lệ, dưới đây là cách bạn có thể làm điều đó với Net::HTTP: https://stackoverflow.com/a/2797443/289274

+0

Đáng buồn thay, nó cũng có vẻ như 'OpenURI :: HTTPError' không bao gồm bất kỳ nội dung nào có thể đã được trả lại từ yêu cầu hoặc (như lời giải thích từ máy chủ, ngoài mã trạng thái). – maurice