JSON Request, настраивающий параметры URL

Я пытаюсь запросить данные с 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 {

    }

    }


}

JSON Request, настраивающий параметры URL

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";
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
57
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Вам нужно обернуть new URL(builtUri.toString()); внутри блока try - catch, потому что new URL(builtUri.toString()); может выбросить MalformedURLException

MalformedURLException Thrown 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();
Ответ принят как подходящий
  • Использование библиотеки OkHttp.
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())

Другие вопросы по теме