Boa tarde Srs.
Vamos ver se alguém pode ajudar.
Estou desenvolvendo uma aplicação que usa a API da Google Directions.
E para isso eu faço minhas requisições para o web service da Google usando o método GET.
Já está tudo funcionando, mas tem um porém, em alguns casos raros, a URL fica maior que 2048 caracteres. E como sabemos, o limite de tamanho de URL é de 2048 caracteres.
Porque ela fica tão grande? Devido aos parametros que tenho que passar.
Queria saber se tem algum outro jeito, se alguém já trabalhou com essa API.
Sobre as API da Google Directions, já li toda a documentação, e lá só diz que a URL não pode ultrapassar 2048 caracteres, mas não diz se é possível fazer um POST e colocar os parametros como Entity. (Na verdade ja tentei isso e não funcionou também).
Se alguém tiver uma dica, eu agradeço.
Abraço.
[quote=jonatarussi]Boa tarde Srs.
Vamos ver se alguém pode ajudar.
Estou desenvolvendo uma aplicação que usa a API da Google Directions.
E para isso eu faço minhas requisições para o web service da Google usando o método GET.
Já está tudo funcionando, mas tem um porém, em alguns casos raros, a URL fica maior que 2048 caracteres. E como sabemos, o limite de tamanho de URL é de 2048 caracteres.
Porque ela fica tão grande? Devido aos parametros que tenho que passar.
Queria saber se tem algum outro jeito, se alguém já trabalhou com essa API.
Sobre as API da Google Directions, já li toda a documentação, e lá só diz que a URL não pode ultrapassar 2048 caracteres, mas não diz se é possível fazer um POST e colocar os parametros como Entity. (Na verdade ja tentei isso e não funcionou também).
Se alguém tiver uma dica, eu agradeço.
Abraço.[/quote]
Jonatarussi
Você poderia me passar esse código que vc faz as http request no google, colocando paramentros?
tentei usar um código que achei na internet, mas não consegui fazer funcionar.
Era simples, digitava em um JOptionPane a rua, cidade e estado, e fazia o request, só que eu não consigo fazer rodar esse código, se você puder me passar um funcionando para eu iniciar meu programa e ir entendendo a API agradeço. Até mais.
[quote=jonatarussi]Boa tarde Srs.
Vamos ver se alguém pode ajudar.
Estou desenvolvendo uma aplicação que usa a API da Google Directions.
E para isso eu faço minhas requisições para o web service da Google usando o método GET.
Já está tudo funcionando, mas tem um porém, em alguns casos raros, a URL fica maior que 2048 caracteres. E como sabemos, o limite de tamanho de URL é de 2048 caracteres.
Porque ela fica tão grande? Devido aos parametros que tenho que passar.
Queria saber se tem algum outro jeito, se alguém já trabalhou com essa API.
Sobre as API da Google Directions, já li toda a documentação, e lá só diz que a URL não pode ultrapassar 2048 caracteres, mas não diz se é possível fazer um POST e colocar os parametros como Entity. (Na verdade ja tentei isso e não funcionou também).
Se alguém tiver uma dica, eu agradeço.
Abraço.[/quote]
Jonatarussi
Você poderia me passar esse código que vc faz as http request no google, colocando paramentros?
tentei usar um código que achei na internet, mas não consegui fazer funcionar.
Era simples, digitava em um JOptionPane a rua, cidade e estado, e fazia o request, só que eu não consigo fazer rodar esse código, se você puder me passar um funcionando para eu iniciar meu programa e ir entendendo a API agradeço. Até mais.
Opa, eu usei o HttpClient, que é uma biblioteca do Apache.
O JsonParser é da biblioteca Gson do Google.
try {
urlFormatada = "http://maps.googleapis.com/maps/api/directions/json? origin=Boston,MA&destination=Concord,MA&waypoints=Charlestown,MA|Lexington,MA&sensor=false"
if (httpclient == null) {
httpclient = new DefaultHttpClient();
}
if (jp == null) {
jp = new JsonParser();
}
httpGet = new HttpGet(urlFormatada);
httpResponse = httpclient.execute(httpGet);
}
Abraço.
[quote=jonatarussi]Opa, eu usei o HttpClient, que é uma biblioteca do Apache.
O JsonParser é da biblioteca Gson do Google.
try {
urlFormatada = "http://maps.googleapis.com/maps/api/directions/json? origin=Boston,MA&destination=Concord,MA&waypoints=Charlestown,MA|Lexington,MA&sensor=false"
if (httpclient == null) {
httpclient = new DefaultHttpClient();
}
if (jp == null) {
jp = new JsonParser();
}
httpGet = new HttpGet(urlFormatada);
httpResponse = httpclient.execute(httpGet);
}
Abraço.[/quote]
Obrigado, eu ainda não testei como funciona sei código pois não sei utilizar essas bibliotecas apache, não sei como implementa-las
O meu código até agora esta assim:
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 Principal{
public static void main(String[] args) {
String start = "sao%paulo";
String finish = "belo%horizonte";
System.out.println(calculateRoute(start,finish ));
}
private static String calculateRoute(String start, String finish){
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;
}
};
}
Ele está me retornando esse erro org.xml.sax.SAXParseException: Content is not allowed in prolog.
null agora eu não sei se estou importando uma biblioteca que não tem na IDE, se tem algum erro na requisição, sei que o resulta da string que faz a solicitação digitada no browser retorna corretamente o valores que estou procurando. Se puder me ajudar, desde já agradeço!!!