2015-07-02 43 views
6

Ho una semplice domanda la risposta a cui ho cercato di scoprire oltre la connessione internet limitata nel mio ufficio ma senza successo.restful webservice con xml o json come parametro

1) Come creare un servizio Web riposante in java preferibilmente utilizzando netbeans che accetta xml e/o json come parametro e come lo elaboro.

2) Come si chiamano questi servizi Web. Voglio dire come possiamo passare xml nell'URL? Oppure c'è un altro modo?

Preferirei utilizzare jersey se devo utilizzare le API. Mi dispiace se la domanda è troppo generica, ma ho bisogno di tutta la conoscenza che posso ottenere su questo in tempi relativamente brevi.

+1

Che cosa succede se qualsiasi condizione suggerito link per imparare questo è limitato nel vostro ufficio? ;) – Garry

+0

Mi aspetto che ... ma vale la pena provare – wib

+1

Entrambe le domande sono molto ampie. Sembra che tu abbia zero esperienze. Se questo è il caso, suggerisco di passare attraverso un tutorial. Personalmente vorrei iniziare in cima alla [guida per l'utente] (https://jersey.java.net/documentation/latest/index.html). Il primo capitolo ti farà funzionare. Il terzo capitolo andrà più in profondità con le basi. E il capitolo nove ti porterà sulla gestione di JSON e XML. Un altro modo per iniziare in Netbeans (molto veloce in modo da poter saltare il capitolo 1) è vedere la parte inferiore di [questa risposta] (http://stackoverflow.com/a/30546891/2587435) –

risposta

1

È possibile fare riferimento al collegamento this. E spero che questo link sia accessibile dall'interno del tuo ufficio.

Inoltre, accettare il tipo di parametro è una base per le vostre esigenze. Esistono due annotazioni utilizzate per il tipo di risposta e risposta che sono rispettivamente @consume(MediaType) e @produce(MediaType). Sarà inoltre necessario specificare il MediaType, come

MediaType.APPLICATION_JSON

o

MediaType.APPLICATION_XML_TYPE

2

Questi sono i punti generali su come fare questo (presumo tu abbia già installato java e le corrispondenti variabili d'ambiente):

1) Scaricare e installare Apache Tomcat. Configura Netbeans per identificare l'istanza di Apache Tomcat che hai estratto/installato.

2) Scaricare i file jar jersey e aggiungerli al progetto Web from here (collegamento: Jersey JAX-RS 2.0 bundle) oppure utilizzare le dipendenze richieste se si sta lavorando con Maven. Non dimenticare di aggiungere il progetto al server Apache Tomcat.

3) Creare una classe java basata su jersey all'interno della cartella di origine del progetto. In ogni funzione restful definirai quali dati accetterete, come li processerete e cosa invierete. Ecco un esempio molto semplice:

@Path("/server") 
public class RestServer { 

    @POST 
    @Consumes(MediaType.TEXT_XML) 
    @Produces(MediaType.TEXT_XML) 
    public String basicPOSTRequest_XMLResponse(String xmlString) {   
     System.out.println("Received: " + xmlString); 
     return doSomethingWithString(xmlString); 
    } 
} 

4) Creare un file 'index.html' nella cartella WebContent contenente le chiamate ajax corrispondenti per le funzioni riposanti. (quelli che hai creato nella classe della maglia). In ogni chiamata Ajax, invierai e riceverai i tuoi dati utilizzando la funzionalità jQuery. Ecco un esempio ajax chiamata base:

function ajaxCall(xmlData) { 

$.ajax({ 
    type: "POST", 
    url: _baseURI + "/server", 
    contentType: "text/xml", 
    data: xmlData, 
    datatype: "text/xml", 
    success: 
      function (data, textStatus, jqXHR){ 
       alert(data); 
      }, 
    error: 
      function (jqXHR, textStatus, errorThrown) { 
       alert("error"); 
      } 
}); 
} 

Si noti che l'Ajax è solo un modo per utilizzare le funzioni riposanti. Ad esempio potresti farlo con un altro programma java (o qualsiasi altra lingua) in grado di inviare chiamate Http.

5) Avviare il server tomcat da eclissi.

6) Usa il tuo file index.html premendo il suo url (di solito è qualcosa del tipo: 'http://localhost:8080/-yourProjectName-') per verificare la funzionalità del tuo progetto.

Quanto sopra sono solo linee guida. Se vuoi maggiori dettagli in qualsiasi passaggio, dillo a me per modificare la mia risposta.

3

È possibile farlo. Attualmente sto lavorando su webservices che fanno questo.

Utilizzare queste annotazioni:

@POST 
@Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) 
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) 
public Object create(Object object); 

Sulla gli oggetti che si desidera passare, è possibile l'annotazione dal pacchetto javax.xml.bind.annotation. In questo modo, java può maresciallo/unmarshal questi stessi.

@XmlRootElement(name = "Something") 
@XmlAccessorType(XmlAccessType.NONE) 
public class A { 

    private static final long serialVersionUID = 6478918140990163091L; 

    @XmlElementWrapper(name = "collectionWrapper") 
    @XmlElement(name = "collectionItem") 
    private final Collection<Object> domainCollection = new LinkedList<Object>(); 
} 

per accedervi fare qualcosa di simile:

final Builder request = ClientBuilder.newClient().target(getBaseUri()).path("url").request(MediaType.APPLICATION_XML); 
return request.post(Entity.entity(param, MediaType.APPLICATION_XML)).readEntity(A.class); 

seguire questo tutorial per gli esempi: http://www.vogella.com/tutorials/REST/article.html

Problemi correlati