unmarshal parse jaxbunmarshaller bean java xml jaxb

java - parse - JAXB: descalificación de url



object to xml java spring (1)

Lo único que está mal con tu anotación es

public class Game { private int id; @XmlElement(name = "GameTitle") //You need to add this since first letter is uppercase, otherwise the GameTitle will not unmarshall. private String gameTitle; ... your code ... }

Entonces, ¿por qué no funciona el resto?

El servidor devolvió el código de respuesta HTTP: 403 para URL: http://thegamesdb.net/api/GetGame.php?id=2

403 = Prohibido

Solución (haga que el servidor crea que es un navegador)

URL url = new URL("http://thegamesdb.net/api/GetGame.php?id=2"); HttpURLConnection http = (HttpURLConnection) url.openConnection(); http.addRequestProperty("User-Agent", "Mozilla/4.76"); InputStream is = http.getInputStream(); Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller(); customer = (Data) jaxbUnmarshaller.unmarshal(is); List<Game> games = customer.getGames(); game = games.get(0);

Nota: Try catch final secuencias Try catch final , cerrar y comprobar NullPointer va más allá de este ejemplo y hasta el usuario.

Estoy intentando mostrar el título y la identificación del juego en este sitio: http://thegamesdb.net/api/GetGame.php?id=2

Cuando me desmarcaba de esta url: http://www.w3schools.com/xml/note.xml todo estaba bien, pero aquí solo había un objeto, no una lista. Entonces estoy teniendo un problema ahora. Estaba leyendo algunos tutoriales y ejemplos de Google e hice este código:

Data.java:

@XmlRootElement( name = "Data" ) @XmlAccessorType (XmlAccessType.FIELD) public class Data { @XmlElement(name = "Game") List<Game> games; public List<Game> getGames() { return games; } public void setGames(List<Game> games) { this.games = games; } }

Archivo Game.java:

@XmlRootElement(name = "Game") @XmlAccessorType (XmlAccessType.FIELD) public class Game { private int id; private String gameTitle; public int getId(){ return id; } public void setId(int id){ this.id = id; } public String getGameTitle(){ return gameTitle; } public void setGameTitle(String gameTitle){ this.gameTitle = gameTitle; } }

Controlador:

@RequestMapping(value = "/", method = RequestMethod.GET) public ModelAndView home(Locale locale) throws MalformedURLException { ModelAndView model = new ModelAndView("index"); JAXBExample test = new JAXBExample(); Game customer = test.readXML(); model.addObject("customer", customer); return model; }

JAXBExample.java:

public class JAXBExample { public Game readXML() throws MalformedURLException { Data customer = null; Game game = null; try { JAXBContext jaxbContext = JAXBContext.newInstance(Data.class); URL url = new URL("http://thegamesdb.net/api/GetGame.php?id=2"); Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller(); customer = (Data) jaxbUnmarshaller.unmarshal(url); List<Game> games = customer.getGames(); game = games.get(0); } catch (JAXBException e) { e.printStackTrace(); } return game; } }

Y index.jsp:

<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%> <tiles:insertDefinition name="defaultTemplate"> <tiles:putAttribute name="body"> Name: ${customer.gameTitle}<br /> Id: ${customer.id}<br /> </tiles:putAttribute> </tiles:insertDefinition>

Pero mi código no está funcionando. ¿Alguien tiene idea de lo que estoy haciendo mal? Porque como resultado acabo de obtener:

Name: Id:

Y nada más.