2013-04-15 25 views
5
require 'net/http' 

require 'rubygems' 

require 'json' 

url = URI.parse('http://www.xyxx/abc/pqr') 

resp = Net::HTTP.get_response(url) # get_response takes an URI object 

data = resp.body 

puts data 

đây là mã của tôi trong ruby, resp.data đang cho tôi dữ liệu ở dạng xml.cách đặt tiêu đề ['content-type'] = 'application/json' trong ruby ​​

phần còn lại api trả lại dữ liệu xml theo mặc định và json nếu tiêu đề loại nội dung là ứng dụng/json.

nhưng tôi muốn dữ liệu ở dạng json.cho điều này tôi phải đặt tiêu đề ['content-type'] = 'application/json'.

nhưng tôi không biết, cách đặt tiêu đề bằng phương thức get_response.để nhận dữ liệu json.

+0

nhờ để chỉnh sửa, và làm cho nó rõ ràng hơn. @rubylovely – unknownbits

Trả lời

10
def post_test 
    require 'net/http' 
    require 'json' 
    @host = '23.23.xxx.xx' 
    @port = '8080' 
    @path = "/restxxx/abc/xyz" 

    request = Net::HTTP::Get.new(@path, initheader = {'Content-Type' =>'application/json'}) 
    response = Net::HTTP.new(@host, @port).start {|http| http.request(request) } 

    puts "Response #{response.code} #{response.message}: #{response.body}" 
end 
4

Sử dụng phương pháp thể hiện Net::HTTP#get để sửa đổi tiêu đề của yêu cầu GET.

require 'net/http' 

url = URI.parse('http://www.xyxx/abc/pqr') 
http = Net::HTTP.new url.host 
resp = http.get("#{url.path}?#{url.query.to_s}", {'Content-Type' => 'application/json'}) 
data = resp.body 
puts data 
+0

gặp lỗi này C: \ Ruby193> test1.rb C: /Ruby193/test1.rb: 4: lỗi cú pháp, không mong muốn ':', mong đợi tASSOC .... query.to_s} ", {' Content-Type ':' application/json '}) ...^ C: /Ruby193/test1.rb: 4: lỗi cú pháp, không mong đợi'} ', mong $ end ... Loại lều': ' application/json '}) ...^ – unknownbits

+0

@oecprashant Xin lỗi, đó là lỗi cú pháp băm khi nhập mã .Tôi đã cập nhật câu trả lời –

+0

bây giờ nó đang hoạt động nhờ @arie shaw – unknownbits

1

Bạn chỉ có thể làm điều này:

uri = URI.parse('http://www.xyxx/abc/pqr') 
req = Net::HTTP::Get.new(uri.path, 'Content-Type' => 'application/json') 

res = Net::HTTP.new(uri.host, uri.port).request(req) 
+0

Tôi gặp lỗi này trên dòng cuối cùng của bạn : NoMethodError - phương thức chưa xác định '[] 'cho # : –

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