Je dois écrire une fonction simple qui prend une URL et traite la réponse au format XML ou JSON. J'ai consulté le site Web de Sun https://swingx-ws.dev.Java.net/servlets/ProjectDocumentList , mais L'objet HttpRequest est introuvable, est-il possible de le faire en Java? Je suis en train d'écrire une application de client riche.
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 via http du serveur au client, je préfère utiliser librairie hessian ou springs http invoker lib
Si vous souhaitez imprimer du code XML directement à 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 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:
URLConnection con = new URL("http://example.com").openConnection()
intégrée;L'étape suivante consiste à l'analyser. Jetez un coup d'œil à cet article pour choisir un analyseur.
Si vous souhaitez spécifiquement utiliser SwingX-WS , jetez un coup d'œil à XmlHttpRequest et JSONHttpRequest .
Plus d'informations sur ces classes dans les articles XMLHttpRequest et Swing blog.
J'ai trouvé que la réponse ci-dessus m'a causé une exception lorsque j'ai essayé d'instancier l'analyseur. J'ai trouvé le code suivant qui a résolu ceci à 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 ());
}
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();
}
}
}
Ce code consiste à analyser les enveloppes XML de la réponse JSON et à les afficher dans l'interface à l'aide de ajax.
Required JavaScript code.
<script type="text/javascript">
$.ajax({
method:"GET",
url: "javatpoint.html",
success : function(data) {
var json=JSON.parse(data);
var tbody=$('tbody');
for(var i in json){
tbody.append('<tr><td>'+json[i].id+'</td>'+
'<td>'+json[i].firstName+'</td>'+
'<td>'+json[i].lastName+'</td>'+
'<td>'+json[i].Download_DateTime+'</td>'+
'<td>'+json[i].photo+'</td></tr>')
}
},
error : function () {
alert('errorrrrr');
}
});
</script>
[{ "id": "1", "prenom": "Tom", "lastName": "Cruise", "photo": " https://pbs.twimg.com/profile_images/73550509975649378305/B81JwLT7.jpg " }, { "id": "2", "prenom": "Maria", "nom": "Sharapova", "photo": " https://pbs.twimg.com/profile_images/3424509849/bfa1b9121afc39d1dcdb53cfc423bf12.jpeg ". }, { "id": "3", "prenom": "James", "lastName": "Bond", "photo": " https://pbs.twimg.com/profile_images/664886718559076352/M00cOLrh.jpg " }] `
URL url=new URL("www.example.com");
URLConnection si=url.openConnection();
InputStream is=si.getInputStream();
String str="";
int i;
while((i=is.read())!=-1){
str +=str.valueOf((char)i);
}
str =str.replace("</string>", "");
str=str.replace("<?xml version=\"1.0\" encoding=\"utf-8\"?>", "");
str = str.replace("<string xmlns=\"http://tempuri.org/\">", "");
PrintWriter out=resp.getWriter();
out.println(str);
`
faites le avec le code suivant:
DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
try {
DocumentBuilder builder = builderFactory.newDocumentBuilder();
Document doc = builder.parse("/home/codefelix/IdeaProjects/Gradle/src/main/resources/static/Employees.xml");
NodeList namelist = (NodeList) doc.getElementById("1");
for (int i = 0; i < namelist.getLength(); i++) {
Node p = namelist.item(i);
if (p.getNodeType() == Node.ELEMENT_NODE) {
Element person = (Element) p;
NodeList id = (NodeList) person.getElementsByTagName("Employee");
NodeList nodeList = person.getChildNodes();
List<EmployeeDto> employeeDtoList=new ArrayList();
for (int j = 0; j < nodeList.getLength(); j++) {
Node n = nodeList.item(j);
if (n.getNodeType() == Node.ELEMENT_NODE) {
Element naame = (Element) n;
System.out.println("Employee" + id + ":" + naame.getTagName() + "=" +naame.getTextContent());
}
}
}
}
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}