将curl转换为Java HttpPost

时间:2018-08-09 16:04:16

标签: java apache http curl

在将curl命令转换为Java httpPost时遇到一些麻烦。我正在尝试联系人口普查局地址批处理端点。我可以联系它,但收到回复,指出有问题。

curl命令位于此https://geocoding.geo.census.gov/geocoder/Geocoding_Services_API.pdf

的最后一页

必需的参数表明它需要基准,vintage和addressFile,因此我尝试使用它们。 addressFile本身是一个我在这里https://geocoding.geo.census.gov/geocoder/locations/addressbatch?form

的csv
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错误的请求

尝试对批次进行地理编码   输入,验证和处理参数时发生错误   提供了。

请验证基准年份(如果   这是一个地理区域批处理地理编码请求)和addressFile   正在使用的参数值,然后重试您的批处理地址代码   请求。

更多信息和文档(在   HTML和PDF格式)有关人口普查地理编码器以及如何使用它的信息   可以在这里找到:https://geocoding.geo.census.gov/geocoder/'> https://geocoding.geo.census.gov/

是否有关于我做错事情的想法?对于我做错了什么,反应不是很明确。

1 个答案:

答案 0 :(得分:0)

原来,API指令不正确。 vintage和基准参数需要具有整数值的字符串,而不是具有基准/年份名称的字符串。