2011-10-17 26 views
8

Tôi cần một ứng dụng để chặn yêu cầu HTTP vì vậy tôi phải thêm một vài dòng mã, phần duy nhất tôi không thể tìm ra là tuyên bố if uri.scheme == 'https'; http.use_ssl = true là có cách nào tôi có thể thiết lập http/https trong báo cáo hiện tại:Ruby: Chặn HTTP.new.start và HTTP động (S)

Net::HTTP.new(uri.host, uri.port).start do |http| 

    # Causes and IOError... 
    if uri.scheme == 'https' 
    http.use_ssl = true 
    end 

    request = Net::HTTP::Get.new(uri.request_uri) 
    http.request(request) 
end 

Added: IOError: use_ssl value changed, but session already started

Trả lời

18

mỗi the documentation, bạn không thể gọi use_ssl= sau khi bắt đầu phiên (tức là sau start). Bạn phải đặt trước, ví dụ:

http = Net::HTTP.new(uri.host, uri.port) 
http.use_ssl = true if uri.scheme == 'https' 

http.start do |h| 
    h.request Net::HTTP::Get.new(uri.request_uri) 
end 
4

Cố gắng thay đổi mã của bạn để

http = Net::HTTP.new(uri.host, uri.port) 

if uri.scheme =='https' 
    http.use_ssl = true 
end 

http.start do 
    request = Net::HTTP::Get.new(uri.request_uri) 
    puts http.request(request) 
end 
+0

Lỗi khi viết mã ở đây ... sẽ không gây ra IOError –

+0

Bạn không đề cập đến bất kỳ IOErrors, @JordonBedwell nào. Bạn đã bỏ qua một số chi tiết từ câu hỏi của mình chưa? –

+0

@ Jordan no Tôi đã không bỏ qua bất kỳ chi tiết nào, nhận xét mã cho biết "# Nguyên nhân và IOError ..." và điều đó đã lâu trước khi tôi xây dựng nó, câu hỏi cũng nên nêu bật vấn đề. –

Các vấn đề liên quan