我正在尝试将一些 json 数据从我用 rails 编写的控制器发送到 java webservice。
在表单提交时,我将所有输入字段数据对其进行一些处理,并使用 to_json 将其转换为 json 对象。
但是我怎样才能将它发送到 java webservice
http://localhost:8080/exim/jsonToMapService?jsonData={"key":"value"}
我正在尝试将一些 json 数据从我用 rails 编写的控制器发送到 java webservice。
在表单提交时,我将所有输入字段数据对其进行一些处理,并使用 to_json 将其转换为 json 对象。
但是我怎样才能将它发送到 java webservice
http://localhost:8080/exim/jsonToMapService?jsonData={"key":"value"}
您可以使用net/http
. (正如@Pierre 所写,你应该在 lib 文件夹中创建一个类,并将你的函数放在那里)
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) }
要执行此类操作,我建议使用RestClient或Faraday。但是我强烈建议不要在控制器中进行 HTTP 调用。
使用 RestClient,它看起来像这样:
RestClient.get('http://localhost:8080/exim/jsonToMapService', { key: :value })
lib
例如,您应该创建一个类以在文件夹中提取此逻辑。
正如@eightbitraptor 所提到的,在执行上述HTTP 请求时,您应该通过在Delayed Job、Resque或Sideqik等后台进程中执行它们来避免阻塞。