2011-04-20 8 views
0

J'essaie de créer une application Java simple. Il veut être en mesure d'entrer l'origine et la destination et de sortir le chemin qu'il prend en XML.API Google Directions accessible via Java

C'est ce que j'ai jusqu'ici. Mon objectif principal est d'obtenir une sortie XML sur la console.

import java.net.HttpURLConnection; 
import java.net.URL; 

import javax.xml.parsers.DocumentBuilder; 
import javax.xml.parsers.DocumentBuilderFactory; 

import org.w3c.dom.Document; 

public class directionService{ 


    public static void main(String[] args) { 

     String start = "geelong"; 
     String finish = "melbourne"; 

     String region = "au"; 

     System.out.println(calculateRoute(start,finish,region)); 
    } 

    private static String calculateRoute(String start, String finish, String region){ 
     String result = ""; 
     String urlString = "http://maps.googleapis.com/maps/api/directions/json?sensor=false&origin="+start+"&destination="+finish; 
     System.out.println(urlString); 

     try{ 
      URL urlGoogleDirService = new URL(urlString); 

      HttpURLConnection urlGoogleDirCon = (HttpURLConnection)urlGoogleDirService.openConnection(); 

      urlGoogleDirCon.setAllowUserInteraction(false); 
      urlGoogleDirCon.setDoInput(true); 
      urlGoogleDirCon.setDoOutput(false); 
      urlGoogleDirCon.setUseCaches(true); 
      urlGoogleDirCon.setRequestMethod("GET"); 
      urlGoogleDirCon.connect(); 

      DocumentBuilderFactory factoryDir = DocumentBuilderFactory.newInstance(); 
      DocumentBuilder parserDirInfo = factoryDir.newDocumentBuilder(); 
      Document docDir = parserDirInfo.parse(urlGoogleDirCon.getInputStream()); 

      urlGoogleDirCon.disconnect(); 
      result = docDir.toString(); 


     return result; 
     } 

     catch(Exception e) 
     { 
      System.out.println(e); 
      return null; 
     } 

    }; 

} 

Il jette cette erreur

java.net.ConnectException: Connection timed out: connect

J'ai essayé d'obtenir des données d'autres webservices et il retourne une décharge xml bien . J'ai lu à propos d'avoir une clé dans la documentation google, est-ce nécessaire? Cela semble fonctionner correctement si je saisis directement la requête dans mon navigateur.

http://maps.googleapis.com/maps/api/directions/xml?sensor=false&origin=geelong&destination=melbourne

Toute aide serait grandement appriciated!

Merci, Steve

Répondre

0

Êtes-vous derrière un pare-feu? Vous devrez peut-être entrer les détails de votre serveur proxy avant votre appel:

Properties systemProperties = System.getProperties(); 
systemProperties.setProperty("http.proxyHost", proxy); 
systemProperties.setProperty("http.proxyPort", port); 
System.setProperty("http.proxyUser", user); 
System.setProperty("http.proxyPassword", password); 
0

Je pense que vous devez setConnectionTimeout sur HttpURLConnection. Essayez aussi cette link dans stackoverflow.

+0

Je viens de donner ça et rien. Je l'ai essayé sur les valeurs 0,15000 et 150000. java.net.ConnectException: La connexion a expiré: connect. – Steveo

+0

J'ai également essayé de changer le HttpURLConnection.setFollowRedirects (faux); mais pas de changement. – Steveo

Questions connexes