Для геокодирования адреса с помощью Google Geocoding APIv3 я хочу создать HttpUrl, равный этому: https://maps.googleapis.com/maps/api/geocode/json?address=Gaustraße 200, Worms&key=...&components=postal_code:67547
Закодированный параметр запроса components%3Dpostal_code
вызовет предполагаемую фильтрацию для почтового индексапотерпеть неудачу ( см. эту тему ).
Мне нужен знак равенства и двойная точка в / после параметра компонентов URL, а не% 3D и% 3A.
Есть ли способ сделать это с OkHttp3?
Я попытался добавить параметр запроса с помощью методов addQueryParameter
и addEncodedQueryParameter
/**
* Creates a okHttp3-URL for geocoding.
*
* @param address the address that is going to be geocoded
* @param key the geocoding api key
* @param baseUrl the URL of google´s geocoding API
* @param postalCode a component filter that restricts result to a given postal code
* @return an instance of HttpUrl
*/
static HttpUrl createOkHttp3URL(String address, String key, String baseUrl, String postalCode) {
HttpUrl.Builder urlBuilder;
urlBuilder = HttpUrl.parse(baseUrl).newBuilder();
urlBuilder.addQueryParameter("address", address);
urlBuilder.addQueryParameter("key", key);
urlBuilder.addEncodedQueryParameter("components=postal_code:", postalCode);
urlBuilder.addQueryParameter("language", "de");
return urlBuilder.build();
}
В обоих случаях, '=' между компонентами и postal_code кодируется, поэтому URL выглядит следующим образом:
https://maps.googleapis.com/maps/api/geocode/json?address=Gaustraße 200, Worms&key=...&components%3Dpostal_code%3A67547&language=de
Как уже говорилось, это приведет к тому, что Google отключит фильтрацию результатов.