У меня проблемы с преобразованием команды 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» для обоих подходов и дает мне 200 ответов, так что я выясню, что означают эти числа.
Я тестировал с тем же кодом со значением "4" для эталонных и винтажных тестов вместо "Public_AR_Current", и он работает нормально.




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