通过Java访问Google Directions API

| 我正在尝试创建一个简单的Java应用程序。它希望能够输入起点和终点,并输出它在xml中采用的路径。 这就是我到目前为止所掌握的。我的主要重点是将xml输出输出到控制台。
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;
        }

    };

}
它抛出此错误 java.net.ConnectException:连接超时:connect 我尝试从其他Web服务获取数据,但它返回xml dump的罚款。我读到有关在Google文档中拥有密钥的信息,这是必需的吗?如果我直接将查询输入到浏览器中,它似乎可以正常工作。 http://maps.googleapis.com/maps/api/directions/xml?sensor=false&origin=geelong&destination=melbourne 任何帮助将不胜感激! 谢谢, 史蒂夫
已邀请:
您在防火墙后面吗?您可能需要在呼叫之前输入代理服务器的详细信息:
Properties systemProperties = System.getProperties();
systemProperties.setProperty(\"http.proxyHost\", proxy);
systemProperties.setProperty(\"http.proxyPort\", port);
System.setProperty(\"http.proxyUser\", user);
System.setProperty(\"http.proxyPassword\", password);
我认为您需要在HttpURLConnection上设置setConnectionTimeout。 也尝试在stackoverflow中使用此链接。

要回复问题请先登录注册