简体   繁体   中英

Send JSON data as post method from rails controller to a web service

I am trying to send some json data from my controller written in rails to a java webservice.

On form submission i take all the input fields data do some procession on it and convert it into json object using to_json.

But how can i send it to java webservice

http://localhost:8080/exim/jsonToMapService?jsonData={"key":"value"}

You can use net/http . (as @Pierre wrote, you should create a class in lib folder, and put there your function)

url = URI.parse(service_url)
headers = {"host" => URL }
req = Net::HTTP::Post.new(url.path)
req["Content-Type"] = "application/json"
req["Accept"] = "application/json"

req.body = JSON.generate(some_data)

con = Net::HTTP.new(url.host, url.port)

# ssl for https
if full_url.include?("https")
  con.use_ssl = true
  con.verify_mode = OpenSSL::SSL::VERIFY_NONE
end

res = con.start {|http| http.request(req) }

To do things like this I suggest using either RestClient or Faraday . Howeve I strongly suggest not doing the HTTP call in your controller.

Using RestClient, it would look like this:

RestClient.get('http://localhost:8080/exim/jsonToMapService', { key: :value })

You should create a class to extract this logic in the lib folder for example.

As @eightbitraptor mentioned it, when performing HTTP request like above, you should avoid blocking by performing them in a background process like Delayed Job , Resque or Sideqik .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM