我正在尝试创建一个简单的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:连接超时:连接
我尝试从其他网络服务获取数据并返回xml转储。我读过在谷歌文档中有一个密钥,这是必需的吗?如果我直接将查询输入浏览器,它似乎工作正常。
http://maps.googleapis.com/maps/api/directions/xml?sensor=false&origin=geelong&destination=melbourne
任何帮助都会受到很大关注!
谢谢, 史蒂夫
答案 0 :(得分:0)
我认为您需要在HttpURLConnection上setConnectionTimeout 。 在stackoverflow中尝试这个link。
答案 1 :(得分:0)
你是否在防火墙后面?您可能需要在通话前输入代理服务器详细信息:
Properties systemProperties = System.getProperties();
systemProperties.setProperty("http.proxyHost", proxy);
systemProperties.setProperty("http.proxyPort", port);
System.setProperty("http.proxyUser", user);
System.setProperty("http.proxyPassword", password);