Я пытаюсь запросить данные с URL-адреса, зависящего от искомой широты / долготы. Пока это мой метод, но у меня возникли проблемы с построением URL-адреса с параметрами поиска;
double latitude = extras.getDouble("latitude");
double longitude = extras.getDouble("longitude");
Это широта и долгота от предыдущего занятия
Это метод моей работы с картами, при котором я буду получать данные, которые я еще не делал, так как сначала хочу получить правильный URL.
public void getApiData() {
// CMPTODO: build URI
/**
* built a URL with the lat/lng passed from prev activity
*/
String lat = String.valueOf(latitude);
String lng = String.valueOf(longitude);
Uri builtUri = Uri.parse(API_URL).buildUpon()
.appendQueryParameter("lat", lat)
.appendQueryParameter("lng", lng)
.build();
URL urlApi = new URL(builtUri.toString());
//TODO: fetch API data
// TODO: Search prefs adjust lat and long to address in JSON URL.
if (URLUtil.isValidUrl(builtUri)){
}else {
}
}
}
SideNote Я новичок в Android Dev, поэтому могу поступить неправильно. любой совет приветствуется
URL
public static final String API_URL= "https://data.police.uk/api/crimes-at-location?date=2017-02&lat=52.629729&lng=-1.131592";




Вам нужно обернуть new URL(builtUri.toString()); внутри блока try - catch, потому что new URL(builtUri.toString()); может выбросить MalformedURLException
MalformedURLExceptionThrown to indicate that a malformed URL has occurred. Either no legal protocol could be found in a specification string or the string could not be parsed.
Попробуй это
URL urlApi;
try {
urlApi = new URL(builtUri.toString());
} catch (MalformedURLException e) {
e.printStackTrace();
}
Follow the following steps
String URL = YOUR_API_URL;
Uri.Builder builder = Uri.parse(URL).buildUpon();
builder.appendQueryParameter("value", your_value);
URL=builder.build().toString();
implementation 'com.squareup.okhttp3:okhttp:3.10.0'
OkHttpClient client = new OkHttpClient.Builder()
.connectTimeout(15, TimeUnit.SECONDS)
.writeTimeout(30, TimeUnit.SECONDS)
.readTimeout(30, TimeUnit.SECONDS).build();
final Request.Builder builder = new Request.Builder();
HttpUrl.Builder urlBuilder = HttpUrl.parse(url).newBuilder();
urlBuilder.addEncodedQueryParameter("lat", lat)
urlBuilder.addEncodedQueryParameter("lng", lng)
builder.url(urlBuilder.build().toString());
client.newCall(builder.build())