Tôi đang xây dựng một số loại proxy.
Khi tôi gọi một số url trong ứng dụng giá, tôi chuyển tiếp yêu cầu đó đến một url khác.Đăng yêu cầu với body_stream và thông số
Yêu cầu tôi chuyển tiếp là POST có tệp và một số tham số.
Tôi muốn thêm các thông số khác.
Nhưng tệp có thể khá lớn. Vì vậy, tôi gửi nó với Net::HTTP#body_stream
thay vì Net::HTTP#body
.
Tôi nhận được yêu cầu của mình là đối tượng Rack::Request
và tôi tạo đối tượng Net :: HTTP của mình với điều đó.
req = Net::HTTP::Post.new(request.path_info)
req.body_stream = request.body
req.content_type = request.content_type
req.content_length = request.content_length
http = Net::HTTP.new(@host, @port)
res = http.request(req)
Tôi đã thử một số cách để thêm thông số của proxy. Nhưng có vẻ như không có gì trong Net :: HTTP cho phép thêm các tham số vào một yêu cầu body_stream, chỉ cho một yêu cầu cơ thể.
Có cách nào đơn giản hơn để ủy quyền yêu cầu giá như vậy không? Hoặc một cách sạch sẽ để thêm các tham số của tôi vào yêu cầu của tôi?
tại sao 'req.set_form_data (: some => 'data')' không hoạt động? – mikezter
Vì nó định nghĩa '# body' và đặt lại' # body_stream' nên tôi mất tất cả dữ liệu được xác định trước đó. –