2013-06-18 50 views
15

Tôi cần gửi dữ liệu bằng JSON đến một ứng dụng khác chạy trên cùng một máy tính.
tôi gửi yêu cầu như vậy (đường ray 3.2.13)Gửi yêu cầu đăng bằng lưới/http

data = { //some data hash } 
url = URI.parse('http://localhost:6379/api/plans') 
    resp, data = Net::HTTP.post_form(url, data.to_JSON) 
    p resp 
    p data 
    { resp: resp, data: data.to_JSON } 

Nhưng tôi nhận được Net::HTTPBadResponse (wrong status line: "-ERR unknown command 'POST'"): Làm thế nào tôi có thể giải quyết vấn đề này?

Cập nhật 1
Cập nhật mã của tôi như @ Raja-d gợi ý

url = URI.parse('http://localhost:6379/v1/sessions') 
    http = Net::HTTP.new(url.host, url.port) 
    http.use_ssl = true 
    resp, data = Net::HTTP.post_form(url, data) 
    p resp 
    p data 

Nhưng tôi vẫn nhận được lỗi Net::HTTPBadResponse (wrong status line: "-ERR unknown command 'POST'"):

+0

Vui lòng xem http://taimoorchangaizpucitian.wordpress.com/2013/05/ này 07/how-to-fix-nethttpbadresponse-wrong-status-line-in-ruby/ –

+0

Bạn có thể đăng lên url đó bằng cách sử dụng curl hoặc một công cụ bên ngoài như PostMan trong Chrome không? – mcfinnigan

+0

Tôi không thử người đưa thư đó. ứng dụng này không thuộc quyền kiểm soát của tôi, – Elmor

Trả lời

37

Tôi không biết vấn đề của bạn là gì nhưng những gì về một cái gì đó như này

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

request = Net::HTTP::Post.new(uri.path, {'Content-Type' => 'application/json'}) 
request.body = data.to_json 

response = http.request(request) 
+0

Cảm ơn, nó đã giải quyết được vấn đề khi gửi yêu cầu! – Elmor

+0

tại sao không phải 'http.post (..' gọi trực tiếp? :) this [method] (http://docs.ruby-lang.org/en/2.0.0/Net/HTTP.html#method-i-post) –

+0

@ArupRakshit không có lý do cụ thể. – oldergod

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