2

Railsで記述されたコントローラーからJava Webサービスにjsonデータを送信しようとしています。

フォームの送信時に、すべての入力フィールドのデータを取得し、to_json を使用して json オブジェクトに変換します。

しかし、どうすればJava Webサービスに送信できますか

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

2 に答える 2

4

使用できます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) }
于 2013-08-13T12:55:46.847 に答える
2

このようなことを行うには、RestClientまたはFaradayを使用することをお勧めします。ただし、コントローラーで HTTP 呼び出しを行わないことを強くお勧めします。

RestClient を使用すると、次のようになります。

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

libたとえば、このロジックをフォルダーに抽出するクラスを作成する必要があります。

@eightbitraptor が言及したように、上記のような HTTP リクエストを実行する場合は、Delayed JobResque、またはSideqikなどのバックグラウンド プロセスで実行することにより、ブロックを回避する必要があります。

于 2013-08-13T12:40:34.527 に答える