2010-09-10 16 views
6

Questa può sembrare una semplice domanda, ma come newbie in Webservies e questa è la mia prima volta che la uso e quindi sto chiedendo il mio dubbio.Come posso passare tipi complessi come oggetti usando Webservices?

Q: Come posso passare oggetti o tipi complessi utilizzando i servizi Web? Ho creato un semplice webservice e sto passando tipi di stringhe e interi ma non sono sicuro di come posso passare oggetti usando il webservice e quindi qualsiasi guida sarebbe molto apprezzata.

Grazie.

risposta

7

È necessario serializzare l'oggetto (creare un testo) sul lato servizio e de-serialze (creare nuovamente un oggetto) sul lato ricevitore. Per anni SOAP è stato standard per questo, ma oggi JSON diventa più popolare in quanto ha un costo molto inferiore rispetto a SOAP.

Se si utilizza SOAP e Java, è possibile provare GSON di Google, che fornisce un'interfaccia di programmazione molto facile da utilizzare.

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 */ 

Per JSON con JAX-WS (non usiamo Apache Axis) avere uno sguardo a questi avviamento-tutorial:

+0

Puoi condividere un esempio di questo, uno di SOAP e altro di JSON? – Rachel

+0

In quale linguaggio di programmazione? – heb

+0

Java è la lingua che stiamo usando. – Rachel

0

È possibile passare JSON o utilizzare xmlserialization se necessario.

+0

Puoi approfondire il tuo punto fornendo alcune spiegazioni dettagliate ed esempi per supportare l'argomento in modo da avere una migliore comprensione del concetto? – Rachel

3

Se si utilizzano servizi Web riposanti (si consiglia Jersey se si è http://jersey.dev.java.net) è possibile passare oggetti annotati JAXB. Jersey serializzerà e deserializza automaticamente i tuoi oggetti sia lato client che lato server.

Lato server;

@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 
    } 
} 

Lato client;

//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 = Non sto usando 'REST' ma' SOAP', puoi condividere un esempio con 'SOAP'? – Rachel

Problemi correlati