Comment lire une réponse XML à partir d’une URL dans java?

Je dois écrire une fonction simple qui prend une URL et traite la réponse qui est XML ou JSON, j’ai vérifié le site Web de Sun https://swingx-ws.dev.java.net/servlets/ProjectDocumentList , mais l’object HttpRequest est est-il possible de le faire en Java? J’écris une application client riche.

Pour l’parsing XML d’un stream d’entrée, vous pouvez le faire:

// the SAX way: XMLReader myReader = XMLReaderFactory.createXMLReader(); myReader.setContentHandler(handler); myReader.parse(new InputSource(new URL(url).openStream())); // or if you prefer DOM: DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); Document doc = db.parse(new URL(url).openStream()); 

Mais pour communiquer via http du serveur vers le client, je préfère utiliser la librairie hessian ou l’invocateur HTTP libère

Si vous souhaitez imprimer XML directement sur l’écran, vous pouvez utiliser TransformerFactory

 URL url = new URL(urlSsortingng); URLConnection conn = url.openConnection(); DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.parse(conn.getInputStream()); TransformerFactory transformerFactory= TransformerFactory.newInstance(); Transformer xform = transformerFactory.newTransformer(); // that's the default xform; use a stylesheet to get a real one xform.transform(new DOMSource(doc), new StreamResult(System.out)); 

Obtenez votre réponse via une requête http régulière, en utilisant:

  • Apache HttpComponents
  • l’ URLConnection con = new URL("http://example.com").openConnection() ;

L’étape suivante est l’parsing syntaxique. Jetez un oeil à cet article pour un choix d’parsingur.

Si vous souhaitez spécifiquement utiliser SwingX-WS , consultez XmlHttpRequest et JSONHttpRequest .

Plus d’informations sur ces classes dans le blog XMLHttpRequest et Swing .

Ok je pense avoir résolu le problème ci-dessous est un code de travail

 // package xmlhttp; import org.jdesktop.http.Response; import org.jdesktop.http.Session; import org.jdesktop.http.State; public class GetXmlHttp{ public static void main(Ssortingng[] args) { getResponse(); } public static void getResponse() { final Session session = new Session(); try { Ssortingng url="http://192.172.2.23:8080/geoserver/wfs?request=GetFeature&version=1.1.0&outputFormat=GML2&typeName=topp:networkcoverage,topp:tehsil&bbox=73.07846689124875,33.67929015631999,73.07946689124876,33.68029015632,EPSG:4326"; final Response res=session.get(url); boolean notDone=true; do { System.out.print(session.getState().toSsortingng()); if(session.getState()==State.DONE) { Ssortingng xml=res.toSsortingng(); System.out.println(xml); notDone=false; } }while(notDone); } catch (Exception e1) { e1.printStackTrace(); } } } 

J’ai trouvé que la réponse ci-dessus m’a causé une exception lorsque j’ai essayé d’instancier l’parsingur. J’ai trouvé le code suivant qui a résolu cela à http://docstore.mik.ua/orelly/xml/sax2/ch03_02.htm .

 import org.xml.sax.*; import javax.xml.parsers.*; XMLReader parser; try { SAXParserFactory factory; factory = SAXParserFactory.newInstance (); factory.setNamespaceAware (true); parser = factory.newSAXParser ().getXMLReader (); // success! } catch (FactoryConfigurationError err) { System.err.println ("can't create JAXP SAXParserFactory, " + err.getMessage ()); } catch (ParserConfigurationException err) { System.err.println ("can't create XMLReader with namespaces, " + err.getMessage ()); } catch (SAXException err) { System.err.println ("Hmm, SAXException, " + err.getMessage ()); } 

Ce code est pour parsingr le XML encapsule la réponse JSON et afficher dans le front end en utilisant ajax.

 Required JavaScript code.