Alguém aqui saberia consumir o seguinte serviço utilizando Soap4R ? http://saoj-office.dyndns.org:8080/ts?wsdl
O serviço está no ar, então fique a vontade para consumi-lo e me mostrar o código que vc utilizou para conseguir essa proeza.
Segue o post completo:
O meu serviço está aqui para qualquer um acessar: http://saoj-office.dyndns.org:8080/ts?wsdl
Quero consumi-lo (acessá-lo) usando Ruby (Soap4R).
O trivial eu consigo, mas quando chamo os métodos com parâmetros não funciona. Quando tenho que passar um Objeto User então não funciona nem a pau.
Alguém experiente com WebServices + Ruby pode dar uma luz?
Veja o meu código abaixo:
require 'rubygems'
gem 'soap4r'
require 'soap/wsdlDriver'
url = 'http://saoj-office.dyndns.org:8080/ts?wsdl'
service = SOAP::WSDLDriverFactory.new(url).create_rpc_driver
puts service.sayHello(nil).m_return # OK
puts service.sayHelloTo("Sergio").m_return # Does not work
u = service.getUserFromEmail("s...@saoj.com").m_return # OK
puts u.username
# Como envio um objeto User para o método sayHelloToUser ???
c:\eclipse\workspace\HelloWS\ruby>ruby client.rb
Hi there! Now is: Tue Jun 16 16:12:09 BRT 2009
Hi null! Now is: Tue Jun 16 16:12:09 BRT 2009
saoj
Problemas:
- Veja o Hi null acima (segunda linha do output)
- Como envio o objeto User no método sayHelloToUser ???
Bom, o serviço está online. Vamos ver se tem alguém bom aqui que consegue consumi-lo em Ruby. hehehe (apenas para motivar)
Implementação do serviço em Java (servidor):
package ws.hello;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.jws.WebService;
@WebService(endpointInterface = "ws.hello.Hello")
public class HelloImpl implements Hello {
public String sayHello() {
return "Hi there! Now is: " + new Date();
}
public String sayHelloTo(String to) {
return "Hi " + to + "! Now is: " + new Date();
}
public String sayHelloToUser(User user) {
return "Hi " + user.getUsername() + "! Now is: " + new Date();
}
public User getUserFromEmail(String email) {
// pretend you went to the database and found the user...
return new User("saoj", email);
}
public List<User> getAllUsers() {
// pretend you went to the database and fetched all users...
List<User> list = new ArrayList<User>(2);
list.add(new User("saoj", "saoj@saoj.com.br"));
list.add(new User("azenha", "rubem@azenha.com.br"));
return list;
}
}