I use rest web service in my rails application for user's
authentication (user creation, login, ...)
Can someone explain me, how can i call a REST Web service (not
developped in Rails, and deployed by Tomcat) in my rails application
via POST method.
class MyUserWS < ActiveResource::Base
self.site = "http://localhost/" # point this to the location of
your web service
self.format = :json # default format is xml.
include this line if you want json
self.element_name = "users" # if your class name (MyUserWS in
this case) is different from the name of the webservice you are
calling, Mention the real name here
self.user = "myself@elitmus.com" # if your webserive need user
authentication mention user name and password
self.password = "mypassword"
end
Once you have this... you can instanciate MyUserWS as if it is a model
on local database table. You can do all activerecord operations on it
as you do on your models
Thanks to all for your answer.
Bill, can you show me please how you you use the NET::HTTP library to
call web service.
Because i have used the NET::HTTP libray like the following, but i
alway got 405 error and web service is not called.
I have the signup method in my user controller!
def signup
require "net/http"
require "uri"
user= User.new(params[:firstname],
params[:lastname],params[:password],params[:mobilenumber],params[:email])
uri = URI.parse("myWebServiceUrl")
http = Net::HTTP.new(uri.host, uri.port)
self.response_body = proc do |response, output|
net_http.start do |http|
http.request_get(uri.request_uri()) do |res|
case res
when Net::HTTPSuccess then
res.read_body do |segment|
response.write(segment)
end
when Net::HTTPRedirection then
response.close() unless response.closed?
return
else
raise "Net::HTTPResponse error: #{res.message.to_s()}"
end
end
end
end
end
Allow me to second the recommendation to read up on ActiveResource - this is exactly what it’s designed for, and in fact if you’re also developing the ReST API, you can use ActiveResource to impose convention (over configuration) in your API - plus you’ll have a nice test rig when you’re done.
Only issue is whether enough people in the Ruby community see AR this way and whether it will continue to be maintained.