J'ai besoin d'é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 Sun https://swingx-ws.dev.java.net/servlets/ProjectDocumentList , mais l'objet HttpRequest est ne se trouve nulle part, est-il possible de le faire en Java? J'écris une application cliente riche.
Réponses
Trop de publicités?Pour l'analyse XML d'un flux d'entrée, vous pouvez 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 sur http du serveur au client, je préfère utiliser la bibliothèque de Hesse ou springs http invoker lib
Si vous souhaitez imprimer XML directement sur l'écran, vous pouvez utiliser TransformerFactory
URL url = new URL(urlString);
URLConnection conn = url.openConnection();
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(conn.getInputStream());
TransformerFactory factory = TransformerFactory.newInstance();
Transformer xform = factory.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 demande http régulière, en utilisant:
- Apache HttpComponents
- le
URLConnection con = new URL("http://example.com").openConnection()
intégré;
L'étape suivante consiste à l'analyser. Jetez un oeil à cet article pour un choix d'analyseur.
Si vous souhaitez utiliser SwingX-WS, alors jetez un oeil à XmlHttpRequest et JSONHttpRequest.
Plus sur ces classes dans le XMLHttpRequest et Swing blog.
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(String[] args) {
getResponse();
}
public static void getResponse()
{
final Session session = new Session();
try {
String 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().toString());
if(session.getState()==State.DONE)
{
String xml=res.toString();
System.out.println(xml);
notDone=false;
}
}while(notDone);
} catch (Exception e1) {
e1.printStackTrace();
}
}
}