Преобразование curl в Java HttpPost

У меня проблемы с преобразованием команды curl в java httpPost. Я пытаюсь связаться с конечной точкой пакетной обработки адресов Бюро переписи. Я могу связаться с ним, но получаю ответ, что что-то не так.

Команда curl находится на последней странице этого https://geocoding.geo.census.gov/geocoder/Geocoding_Services_API.pdf

В требуемых параметрах указано, что ему нужны тесты, vintage и addressFile, поэтому я пытаюсь использовать каждый из них. Сам addressFile - это csv, который я получил здесь https://geocoding.geo.census.gov/geocoder/locations/addressbatch?form

DefaultHttpClient httpClient = new DefaultHttpClient();
HttpResponse response;

try {
    String url = "https://geocoding.geo.census.gov/geocoder/geographies/addressbatch"
    HttpPost httpPost = new HttpPost(url);

    MultipartEntity postEntity = new MultipartEntity();
    postEntity.addPart("addressFile", new FileBody(new File("addresses.csv")));
    postEntity.addPart("benchmark", new StringBody("Public_AR_Current"));
    postEntity.addPart("vintage", new StringBody("Public_AR_Current"));

    httpPost.setEntity(postEntity);

    response = httpClient.execute(httpPost);
    HttpEntity responseEntity = response.getEntity();

    StringWriter writerResponse = new StringWriter();
    IOUtils.copy(responseEntity.getContent(), writerResponse, "UTF-8");

    print response.getStatusLine()

    print writerResponse.toString()

} catch (IOException e) {
    print e
}
finally {
    httpClient.getConnectionManager().shutdown();
}

Делая это так, я получаю ошибку с кодом 400

HTTP/1.1 400 Bad Request

While attempting to geocode your batch input, an error occurred validating and processing the parameters that were provided.

Please validate the benchmark, vintage (if this is a geographies batch geocode request), and addressFile parameter values that are being used and retry your batch geocode request.

More information and documentation (available in HTML and PDF formats) about the Census Geocoder and how to use it can be found here: https://geocoding.geo.census.gov/geocoder/'>https://geocoding.geo.census.gov/

Есть мысли о том, что я делаю неправильно? Ответ не очень конкретен в том, что я делаю не так.

Значения для теста и урожая недействительны, одно из возможных значений - 4 для обоих, проверьте другие возможные значения, проверяя сетевой вызов в инструменте разработчика (Mozilla).

Pratapi Hemant Patel 09.08.2018 19:03

Привет, спасибо за это. Похоже, что и винтаж, и тест нужны целые строки, а не имя. Использование «4» для обоих подходов и дает мне 200 ответов, так что я выясню, что означают эти числа.

Exuro 09.08.2018 19:09

Я тестировал с тем же кодом со значением "4" для эталонных и винтажных тестов вместо "Public_AR_Current", и он работает нормально.

Pratapi Hemant Patel 09.08.2018 19:09
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
3
303
1

Ответы 1

Оказывается, инструкции API неверны. Для параметров урожая и эталонного теста нужны строки с целочисленными значениями, а не строки с названиями эталонов / винтажей.

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