Pessoal, tenho que passar algum endereco de origem e destino para o googlemaps e depois tenho q pegar a rota que ele traca e apresentar na tela (sem ser em javascript)
Eu consegui fazer isto em asp.net, porem em java estou apanhando…
O erro esta na hora que ele tenta conectar.
Oque eu estou fazendo eh o seguinte:
[code] //CODIGO QUE CONSULTA O SITE DO GOOGLEMAPS
public List<?> consultarRota(String origem, String destino) throws SAXException, IOException, ParserConfigurationException, XPathExpressionException{
URL url = new URL ("http:/maps.google.com.br/maps?q=de" + origem + "para" + destino + "&output=kml&view=text");
HttpURLConnection connection1 = (HttpURLConnection) url.openConnection();
connection1.connect(); //aqui apresenta o erro.
InputStream input = connection1.getInputStream();
XStream xStream = new XStream();
xStream.alias("name", name.class);
xStream.alias("latitude", name.class);
xStream.alias("longitude", name.class);
List<?> lista = (List<?>) xStream.fromXML(input);
return lista;
}[/code]
[code]//MEU METODO NO SERVLET
BLLGoogleAPIConnector api = new BLLGoogleAPIConnector();
String origem = (String) request.getAttribute(“origem”);
String destino = (String) request.getAttribute(“destino”);
List<?> resultado = api.consultarRota(origem, destino);
request.setAttribute("filmes", resultado);
RequestDispatcher visao = request.getRequestDispatcher("retorno.jsp");
visao.forward(request, response);
[/code]
Outra duvida que eu estou eh sobre o “List<?>”… se eu deixar ele como somente List o eclipse deixa ele sublinhado de amarelo (warning) tem algum problema?? ou o certo eh usar ele com o “?”
Na verdade eu ainda nao cheguei neste passo de passar o XML que o googlemaps me retorna e gravar em listas… o meu problema vem na hora de abrir a conexao…
Alguem sabe oque pode estar acontecendo.
Abaixo esta o erro que me aparece na aba de console:
SEVERE: StandardWrapperValve[servlet_GetRotas]: PWC1406: Servlet.service() for servlet servlet_GetRotas threw exception
java.lang.NullPointerException
at sun.net.www.ParseUtil.toURI(ParseUtil.java:261)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:795)
at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:726)
at BLL.BLLGoogleAPIConnector.consultarRota(BLLGoogleAPIConnector.java:51)
at BLL.servlet_GetRotas.serviceRequest(servlet_GetRotas.java:61)
at BLL.servlet_GetRotas.doPost(servlet_GetRotas.java:46)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:754)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
at org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:427)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:315)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:287)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:218)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:648)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:94)
at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:98)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:222)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:648)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:587)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1096)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:166)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:648)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:587)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1096)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:288)
at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.invokeAdapter(DefaultProcessorTask.java:647)
at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.doProcess(DefaultProcessorTask.java:579)
at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.process(DefaultProcessorTask.java:831)
at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTask(DefaultReadTask.java:341)
at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:263)
at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:214)
at com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:265)
at com.sun.enterprise.web.connector.grizzly.WorkerThreadImpl.run(WorkerThreadImpl.java:116)
EU ja tentei fazer deste jeito mais tb deu erro:
[code]DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
domFactory.setNamespaceAware(true);
DocumentBuilder builder = domFactory.newDocumentBuilder();
Document doc = builder.parse(“http:/maps.google.com.br/maps?q=de” + origem + “para” + destino + “&output=kml&view=text”); // O ERRO ERA AQUI!
XPathFactory factory = XPathFactory.newInstance();
XPath xpath = factory.newXPath();
XPathExpression expr = xpath.compile("/kml/text()");
Object result = expr.evaluate(doc, XPathConstants.NODESET);
NodeList nodes = (NodeList) result;
for (int i = 0; i < nodes.getLength(); i++) {
rota1.add(nodes.item(i).getNodeValue());
}[/code]
Abracos e obrigado.