Java 使用 google 距离矩阵 api 获取请求错误
Java get request error using google distance matrix api
出于某种原因,当我们向 google 距离矩阵 api 发送获取请求时,我们收到一条错误消息,提示我们已超出每日配额,但我们甚至没有完成 100 个请求,因为可以在这里看到:
https://i.stack.imgur.com/B94c1.png
发送get请求的代码如下:
public class JsonRead {
// Coverteix tot el contingut del BufferedReader en una String per per el seu posterior tractament
private String readAll(Reader rd) throws IOException {
StringBuilder sb = new StringBuilder();
int cp;
while ((cp = rd.read()) != -1) {
sb.append((char) cp);
}
return sb.toString();
}
//Per alguna rao, depen de quines adreçes disparen OVER_QUERY_LIMIT
// Agafa una String que conte la direcció, fa una GET Request i retorna el contingut en format JsonObject
public JsonObject readJsonFromUrl(String url) throws IOException {
System.out.println(url);
InputStream is = new URL(url).openStream();
try {
JsonParser par = new JsonParser();
BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8")));
String jsonText = readAll(rd);
JsonObject json = (JsonObject) par.parse(jsonText);
return json;
} finally {
is.close();
}
}
public JsonObject getDistancies (int inici, int fi, String adress, JsonArray bicing) throws IOException{
String array_adreces = "";
JsonRead jr = new JsonRead();
for (int i = inici; i <= fi ; i++){
JsonObject aux = bicing.get(i).getAsJsonObject();
if (aux.get("streetName").getAsString().contains("/")){
array_adreces += aux.get("streetName").getAsString() + ",Barcelona" + "|";
}
else {
array_adreces += aux.get("streetName").getAsString() + " " + aux.get("streetNumber").getAsString() + ",Barcelona" + "|";
}
array_adreces = array_adreces.replaceAll(" ", "+");
}
// Fem una web call que ens retorna les distancies de totes les estacions a l'adreça que l'usuari dona
JsonObject distancies = jr.readJsonFromUrl("https://maps.googleapis.com/maps/api/distancematrix/json?origins=" + array_adreces +"&destinations=" + adress + "&mode=bicycling&language=es-ES®ion=es&key=AIzaSyBc2N_mjY8w3cDiqQcra4KjF_Gm4-0ZLUI");
return distancies;
}
}
可以看出,我们使用存储在 Json 文件中的多个地址发送了一个获取请求。
Json 文件可以在这里看到:http://wservice.viabicing.cat/v2/stations
但是,我们认为问题可能与请求的长度有关,因为当我们减少它的长度时,我不会给我们带来麻烦。
这是一个请求(我现在无法 post 两个链接,抱歉):
https://maps.googleapis.com/maps/api/distancematrix/json?origins=Gran+Via+Corts+Catalanes+760,Barcelona|Roger+de+Flor/+Gran+Vía,Barcelona|Ali+Bei+44,Barcelona|Ribes+13,Barcelona|Pg+Lluís+Companys+11,Barcelona|Pg+Lluís+Companys+18,Barcelona|Pg+Lluís+Companys+1,Barcelona|Pg+Lluís+Companys+2,Barcelona|Marquès+de+l'Argentera+17,Barcelona|Carrer+Comerç+27,Barcelona|Trelawny+2,Barcelona|Pg+Marítim+Barceloneta+23,Barcelona|Avinguda+Litoral+16,Barcelona|Avinguda+del+Marques+Argentera+19,Barcelona|Girona+74,Barcelona|Av.+Meridiana+47,Barcelona|Av.+Meridiana+47,Barcelona|Rosselló+412,Barcelona|Rosselló+354,Barcelona|Indústria+157,Barcelona|Sant+Antoni+Maria+Claret+214,Barcelona|Sardenya+296,Barcelona|Bruc+45,Barcelona|Marina+185,Barcelona|Bruc+102,Barcelona|Dos+Maig+230,Barcelona|Provença+322,Barcelona|Marina+311,Barcelona|Provença+388,Barcelona|Diagonal+231,Barcelona|Plaça+del+Mar+72,Barcelona|Plaça+del+Mar+1,Barcelona|Baluart+58,Barcelona|Sant+Pere+Més+Alt+4,Barcelona|Sant+Ramon+de+Penyafort+1,Barcelona|Catedral+6,Barcelona|Pl.+Antonio+López+,Barcelona|Pl.+Pau+Vila+,Barcelona|Pl.+Pau+Vila+,Barcelona|Doctor+Aiguader+2,Barcelona|Pl.+Poeta+Boscà/Atlàntida,Barcelona|Ciutat+de+Granada+168,Barcelona|Av+Meridiana+80,Barcelona|Av+Meridiana+66,Barcelona|Marina++65,Barcelona|Ramon+trias+Fargas+19,Barcelona|Ramon+Trias+Fargas+,Barcelona|Meridiana+40,Barcelona|Rosa+Sensat+en+front+20,Barcelona|Av.+Paral.lel+54,Barcelona|Pl.+Vicenç+Martorell+,Barcelona|Pl.+Carles+Pi+i+Sunyer+,Barcelona|Sant+Oleguer+2,Barcelona|La+Rambla+80,Barcelona|Portal+de+Santa+Madrona+2,Barcelona|La+Rambla+2,Barcelona|Plaça+dels+Àngels+1,Barcelona|Plaça+dels+Àngels+2,Barcelona|Rambla+Catalunya++47,Barcelona|Rambla+Catalunya+42,Barcelona|Pl.+Catalunya++5,Barcelona|Pl.+Catalunya+7,Barcelona|Pl.+Catalunya+,Barcelona|Pl.+Catalunya+,Barcelona|Gran+Via+609,Barcelona|Rocafort+214,Barcelona|Rambla+Catalunya+133,Barcelona|Avda.+Litoral+,Barcelona|Villarroel+2,Barcelona|Floridablanca++145,Barcelona|Provença+215,Barcelona|Enric+Granados+99,Barcelona|Josep+Tarradellas+129,Barcelona|Josep+Tarradellas+58,Barcelona|Còrsega+216,Barcelona|Pl.+Universitat+,Barcelona|Pl.+Universitat+,Barcelona|Enric+Granados+35,Barcelona|Vilamarí+davant+61,Barcelona|Rocafort+72,Barcelona|Comte+Borrell+177,Barcelona|Diputació+152,Barcelona|Paral·lel+146,Barcelona|Viladomat+2,Barcelona|Mallorca+41,Barcelona|Londres+101,Barcelona|Rosselló+101,Barcelona|Rosselló+108,Barcelona|Comte+Borrell+119,Barcelona|Provença+241,Barcelona|Gran+Via+375,Barcelona|Gran+Via+375,Barcelona|Tarragona+103,Barcelona|Gran+Via+361,Barcelona|Tarragona+141,Barcelona|Viriat+45,Barcelona|Viriat+53,Barcelona|Tarragona+159,Barcelona|Av.+Diagonal+602,Barcelona|Av.+Diagonal+612,Barcelona|&destinations=Via+Augusta,+209,+08021+Barcelona,+Spain&mode=bicycling&language=es-ES®ion=es&key=AIzaSyBc2N_mjY8w3cDiqQcra4KjF_Gm4-0ZLUI
如您所见,对每个地址使用获取请求是不可行的,因为大约有 100 个地址,有什么方法可以增加获取请求的可接受长度吗?
如果不是,允许的最大长度是多少?
我认为这是因为我们在西班牙放置了特殊字符,例如 ´
或 ñ
。
出于某种原因,当我们向 google 距离矩阵 api 发送获取请求时,我们收到一条错误消息,提示我们已超出每日配额,但我们甚至没有完成 100 个请求,因为可以在这里看到:
https://i.stack.imgur.com/B94c1.png
发送get请求的代码如下:
public class JsonRead {
// Coverteix tot el contingut del BufferedReader en una String per per el seu posterior tractament
private String readAll(Reader rd) throws IOException {
StringBuilder sb = new StringBuilder();
int cp;
while ((cp = rd.read()) != -1) {
sb.append((char) cp);
}
return sb.toString();
}
//Per alguna rao, depen de quines adreçes disparen OVER_QUERY_LIMIT
// Agafa una String que conte la direcció, fa una GET Request i retorna el contingut en format JsonObject
public JsonObject readJsonFromUrl(String url) throws IOException {
System.out.println(url);
InputStream is = new URL(url).openStream();
try {
JsonParser par = new JsonParser();
BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8")));
String jsonText = readAll(rd);
JsonObject json = (JsonObject) par.parse(jsonText);
return json;
} finally {
is.close();
}
}
public JsonObject getDistancies (int inici, int fi, String adress, JsonArray bicing) throws IOException{
String array_adreces = "";
JsonRead jr = new JsonRead();
for (int i = inici; i <= fi ; i++){
JsonObject aux = bicing.get(i).getAsJsonObject();
if (aux.get("streetName").getAsString().contains("/")){
array_adreces += aux.get("streetName").getAsString() + ",Barcelona" + "|";
}
else {
array_adreces += aux.get("streetName").getAsString() + " " + aux.get("streetNumber").getAsString() + ",Barcelona" + "|";
}
array_adreces = array_adreces.replaceAll(" ", "+");
}
// Fem una web call que ens retorna les distancies de totes les estacions a l'adreça que l'usuari dona
JsonObject distancies = jr.readJsonFromUrl("https://maps.googleapis.com/maps/api/distancematrix/json?origins=" + array_adreces +"&destinations=" + adress + "&mode=bicycling&language=es-ES®ion=es&key=AIzaSyBc2N_mjY8w3cDiqQcra4KjF_Gm4-0ZLUI");
return distancies;
}
}
可以看出,我们使用存储在 Json 文件中的多个地址发送了一个获取请求。
Json 文件可以在这里看到:http://wservice.viabicing.cat/v2/stations
但是,我们认为问题可能与请求的长度有关,因为当我们减少它的长度时,我不会给我们带来麻烦。
这是一个请求(我现在无法 post 两个链接,抱歉):
https://maps.googleapis.com/maps/api/distancematrix/json?origins=Gran+Via+Corts+Catalanes+760,Barcelona|Roger+de+Flor/+Gran+Vía,Barcelona|Ali+Bei+44,Barcelona|Ribes+13,Barcelona|Pg+Lluís+Companys+11,Barcelona|Pg+Lluís+Companys+18,Barcelona|Pg+Lluís+Companys+1,Barcelona|Pg+Lluís+Companys+2,Barcelona|Marquès+de+l'Argentera+17,Barcelona|Carrer+Comerç+27,Barcelona|Trelawny+2,Barcelona|Pg+Marítim+Barceloneta+23,Barcelona|Avinguda+Litoral+16,Barcelona|Avinguda+del+Marques+Argentera+19,Barcelona|Girona+74,Barcelona|Av.+Meridiana+47,Barcelona|Av.+Meridiana+47,Barcelona|Rosselló+412,Barcelona|Rosselló+354,Barcelona|Indústria+157,Barcelona|Sant+Antoni+Maria+Claret+214,Barcelona|Sardenya+296,Barcelona|Bruc+45,Barcelona|Marina+185,Barcelona|Bruc+102,Barcelona|Dos+Maig+230,Barcelona|Provença+322,Barcelona|Marina+311,Barcelona|Provença+388,Barcelona|Diagonal+231,Barcelona|Plaça+del+Mar+72,Barcelona|Plaça+del+Mar+1,Barcelona|Baluart+58,Barcelona|Sant+Pere+Més+Alt+4,Barcelona|Sant+Ramon+de+Penyafort+1,Barcelona|Catedral+6,Barcelona|Pl.+Antonio+López+,Barcelona|Pl.+Pau+Vila+,Barcelona|Pl.+Pau+Vila+,Barcelona|Doctor+Aiguader+2,Barcelona|Pl.+Poeta+Boscà/Atlàntida,Barcelona|Ciutat+de+Granada+168,Barcelona|Av+Meridiana+80,Barcelona|Av+Meridiana+66,Barcelona|Marina++65,Barcelona|Ramon+trias+Fargas+19,Barcelona|Ramon+Trias+Fargas+,Barcelona|Meridiana+40,Barcelona|Rosa+Sensat+en+front+20,Barcelona|Av.+Paral.lel+54,Barcelona|Pl.+Vicenç+Martorell+,Barcelona|Pl.+Carles+Pi+i+Sunyer+,Barcelona|Sant+Oleguer+2,Barcelona|La+Rambla+80,Barcelona|Portal+de+Santa+Madrona+2,Barcelona|La+Rambla+2,Barcelona|Plaça+dels+Àngels+1,Barcelona|Plaça+dels+Àngels+2,Barcelona|Rambla+Catalunya++47,Barcelona|Rambla+Catalunya+42,Barcelona|Pl.+Catalunya++5,Barcelona|Pl.+Catalunya+7,Barcelona|Pl.+Catalunya+,Barcelona|Pl.+Catalunya+,Barcelona|Gran+Via+609,Barcelona|Rocafort+214,Barcelona|Rambla+Catalunya+133,Barcelona|Avda.+Litoral+,Barcelona|Villarroel+2,Barcelona|Floridablanca++145,Barcelona|Provença+215,Barcelona|Enric+Granados+99,Barcelona|Josep+Tarradellas+129,Barcelona|Josep+Tarradellas+58,Barcelona|Còrsega+216,Barcelona|Pl.+Universitat+,Barcelona|Pl.+Universitat+,Barcelona|Enric+Granados+35,Barcelona|Vilamarí+davant+61,Barcelona|Rocafort+72,Barcelona|Comte+Borrell+177,Barcelona|Diputació+152,Barcelona|Paral·lel+146,Barcelona|Viladomat+2,Barcelona|Mallorca+41,Barcelona|Londres+101,Barcelona|Rosselló+101,Barcelona|Rosselló+108,Barcelona|Comte+Borrell+119,Barcelona|Provença+241,Barcelona|Gran+Via+375,Barcelona|Gran+Via+375,Barcelona|Tarragona+103,Barcelona|Gran+Via+361,Barcelona|Tarragona+141,Barcelona|Viriat+45,Barcelona|Viriat+53,Barcelona|Tarragona+159,Barcelona|Av.+Diagonal+602,Barcelona|Av.+Diagonal+612,Barcelona|&destinations=Via+Augusta,+209,+08021+Barcelona,+Spain&mode=bicycling&language=es-ES®ion=es&key=AIzaSyBc2N_mjY8w3cDiqQcra4KjF_Gm4-0ZLUI
如您所见,对每个地址使用获取请求是不可行的,因为大约有 100 个地址,有什么方法可以增加获取请求的可接受长度吗?
如果不是,允许的最大长度是多少?
我认为这是因为我们在西班牙放置了特殊字符,例如 ´
或 ñ
。