Java使用google distance matrix api获取请求错误

时间:2017-05-05 10:22:54

标签: java json google-distancematrix-api get-request

出于某种原因,当我们向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&region=es&key=AIzaSyBc2N_mjY8w3cDiqQcra4KjF_Gm4-0ZLUI");
        return distancies;

    }
}

可以看出,我们使用存储在Json文件中的多个地址发送get请求。

可以在此处看到Json文件:http://wservice.viabicing.cat/v2/stations

但是,我们认为问题可能与请求的长度有关,因为当我们减少它的长度时,我没有给我们带来任何麻烦。

这是一次resquest(我暂时不能发布两个链接,抱歉):

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&region=es&key=AIzaSyBc2N_mjY8w3cDiqQcra4KjF_Gm4-0ZLUI

正如您所看到的,对每个地址使用获取请求是不可行的,因为大约有100个地址,是否有办法增加获取请求的可接受长度?

如果没有,那么允许的最大长度是多少?

1 个答案:

答案 0 :(得分:0)

我认为这是因为我们在西班牙设置了特殊角色,如´ñ