Conectar com maps.google.com.br

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.

porque nao usa a propria api do google maps para fazer isso ?

Falowsss…

http:/maps.google.com.br/maps?q=de

Não está faltando um “/” ? Se passar errado o Java não corrige, dá erro mesmo.

Dica: Ponha essa URL no seu browser (ex. Firefox) Veja para que valor ele vai corrigir a sua URL.

E ai, era a url mesmo q estava errada… soh que meu problema agora esta aqui

 XStream xStream = new XStream();

Esta falando que nao consegui achar os JAR do XSteam
O erro agora eh:

java.lang.NoClassDefFoundError: com/thoughtworks/xstream/XStream

Eu fui no eclipse cliquei em Java Build Path > Libraries > Add external Jars > (selecionei os arquivos no meu c:/) > Open > Ok
Dentro do meu projeto eu consigo inserir os JARS, mais na hora de rodar ou debugar ele me mostra este erro…
Obrigado.

galera, pra nao abrir outro topico, eh o seguinte… eu tenho q enviar uma solicitacao ao ao googlemaps da forma q estou fazendo mesmo.
Do modo em XStream eu nao estou conseguindo pois esta dando um erro de duplicação de TAgs na hora q eu vou fazer o parse do xml pro obj. Na verdade achei meio complicado pois tenho q fazer uma classe pra cada tag do meu xml… isso eu teria q fazer umas 15 classes.

Já deste modo

Document doc = builder.parse("http:/maps.google.com.br/maps?q=de09910750para09910760&output=kml&view=text");

O meu objeto “doc” esta voltando nulo… e não eh lancado nenhuma exception e o objeto fica null :cry:

Meu projeto web pra faculdade eh o seguinte… eu tenho no meu BD uma tabela “PEDIDO”, e para cada pedido eu tenho uma rota na tabela “ROTA”. Entao eu tenho q pegar soh as latitudes, longitudes, descricao, distancia e distanciaTotal e coloca na minha tabela “ROTA”.

Alguem sabe como posso fazer isto?