如何使用ArcGIS REST正确格式化geocodeAddresses文章
我能够使用GET请求成功地处理批量地理编码请求(这里描述了geocodeAddresses ArcGIS REST API:世界地理编码服务| ArcGIS for Developers)。但是,我知道我会像文档描述的那样使用POST方法,因为我的批处理可能很大 当我试图通过POST提交数据时,会收到一条毫无帮助的错误消息如何使用ArcGIS REST正确格式化geocodeAddresses文章,rest,arcgis,geocode,Rest,Arcgis,Geocode,我能够使用GET请求成功地处理批量地理编码请求(这里描述了geocodeAddresses ArcGIS REST API:世界地理编码服务| ArcGIS for Developers)。但是,我知道我会像文档描述的那样使用POST方法,因为我的批处理可能很大 当我试图通过POST提交数据时,会收到一条毫无帮助的错误消息 {'error': {'code': 400, 'details': [], 'message': 'Unable to complete operation
{'error': {'code': 400,
'details': [],
'message': 'Unable to complete operation.'}}
我尝试提出的请求如下所示(我尝试了各种迭代):
网址:
&f=pjson
发布数据(原始)
当然,令牌被替换为我通过GET请求成功测试的有效令牌
我尝试过的变体包括将“records”作为顶级键,并将GET参数(如令牌)作为键包含在POST有效负载中。结果表明,ESRI希望数据以x-www-form-urlencoded的形式发送,而不仅仅是一个JSON对象。因此,要正确使用端点,请将其作为formdata发送,密钥为“addresses”,值为JSON records对象。我遇到了同样的问题,正如您已经指出的: ESRI希望数据以x-www-form-urlencoded的形式发送,而不仅仅是一个JSON对象。因此,要正确使用端点,请将其作为formdata发送,键为“addresses”,值为JSON records对象
如果您正在寻找java实现,您可以考虑使用Form对象(javax .WS.R.Corr.Form)。 我是这样做的:
// Build addresses form object
Form addressesParam = new Form();
addressesParam.param("addresses", buildAddressesParam(addresses).toString());
// Try make request and parse it into JSON node
JsonNode jsonResponse;
try {
String response = webTarget.request(MediaType.APPLICATION_JSON).post(Entity.entity(addressesParam, MediaType.APPLICATION_FORM_URLENCODED_TYPE), String.class);
jsonResponse = new ObjectMapper().readTree(response);
} catch(IOException e) {
...
}
其中输入地址定义为哈希映射地址
// Build addresses form object
Form addressesParam = new Form();
addressesParam.param("addresses", buildAddressesParam(addresses).toString());
// Try make request and parse it into JSON node
JsonNode jsonResponse;
try {
String response = webTarget.request(MediaType.APPLICATION_JSON).post(Entity.entity(addressesParam, MediaType.APPLICATION_FORM_URLENCODED_TYPE), String.class);
jsonResponse = new ObjectMapper().readTree(response);
} catch(IOException e) {
...
}