2010-09-10 24 views
6

Esto puede sonar como una simple pregunta, pero como soy un novato en Webservies y esta es la primera vez que lo uso, entonces estoy preguntando mi duda.¿Cómo puedo pasar tipos complejos como objetos usando servicios web?

Q: ¿Cómo puedo pasar objetos o tipos complejos usando los servicios web? He creado un servicio web simple y paso tipos de cadenas y enteros, pero no estoy seguro de cómo puedo pasar objetos usando el servicio web, por lo que cualquier orientación sería muy apreciada.

Gracias.

Respuesta

7

Solo tiene que serializar el objeto (hacer un texto) en el lado del servicio y de-serializar (hacer un objeto de nuevo) en el lado del receptor. Durante años, SOAP fue estándar para esto, pero hoy en día, JSON se vuelve más popular ya que tiene mucho menos sobrecarga que SOAP.

Si usa SOAP y Java puede probar GSON by Google, que proporciona una interfaz de programación muy fácil de usar.

JSON con GSON:

String jsonized = new Gson().toJson(myComplexObject); 
/* no we have a serialized version of myComplexObject */ 

myComplexObjectClass myComplexObjext = new Gson().fromJson(jsonized, myComplexObjectClass.class); 
/* now we have the object again */ 

Para JSON con JAX-WS (no usamos Apache Axis) echar un vistazo a estos arrancadores tutoriales:

+0

¿Puedes compartir un ejemplo de esto, uno de SOAP y otro de JSON? – Rachel

+0

¿En qué lenguaje de programación? – heb

+0

Java es el lenguaje que estamos usando. – Rachel

0

Puede pasar json o usar xmlserialization si es necesario.

+0

¿Puede dar más detalles sobre su punto de dar alguna explicación detallada y ejemplo para apoyar el argumento para que yo tenga una mejor comprensión del concepto? – Rachel

3

Si está utilizando servicios web relajantes (recomendaría Jersey si es http://jersey.dev.java.net) puede pasar objetos anotados JAXB. Jersey serializará y deserializará automáticamente sus objetos tanto del lado del cliente como del servidor.

Lado del servidor;

@Path("/mypath") 
public class MyResource 
{ 
    @GET 
    @Produces(MediaType.APPLICATION_XML) 
    public MyBean getBean() 
    { 
     MyBean bean = new MyBean(); 
     bean.setName("Hello"); 
     bean.setMessage("World"); 
     return bean; 
    } 

    @POST 
    @Consumers(MediaType.APPLICATION_XML) 
    public void updateBean(MyBean bean) 
    { 
     //Do something with your bean here 
    } 
} 

Lado del cliente;

//Get data from the server 
Client client = Client.create(); 
WebResource resource = client.resource(url); 
MyBean bean = resource.get(MyBean.class); 

//Post data to the server 
bean.setName("Greetings"); 
bean.setMessage("Universe"); 
resource.type(MediaType.APPLICATION_XML).post(bean); 

JAXB bean;

@XmlRootElement 
public class MyBean 
{ 
    private String name; 
    private String message; 

    //Constructors and getters/setters here 
} 
+0

@qwerky = No estoy usando 'REST' pero' SOAP', ¿puedes compartir un ejemplo con 'SOAP'? – Rachel

Cuestiones relacionadas