无法使用REST API在GeoServer中创建新图层(featuretype)

无法使用REST API在GeoServer中创建新图层(featuretype),rest,request,geoserver,Rest,Request,Geoserver,所以我用了两个工作日来解决这个问题。我们正在为地图自动渲染过程。所有的数据都是在sqlbase中给出的,我的工作是编写“包装器”,这样我们就可以在我们的内部框架中实现它。除了一个需要的请求外,我处理了所有请求。 该请求是POST featuretype,因为这是一种创建稍后可以渲染的层的方法 我将所有请求保存在postman中,以便对geoserver本身提供的示例数据进行预测试。我甚至无法得到状态代码为201的响应,并且总是得到500个内部服务器错误。此状态在sytax中描述为可能的语法错误。

所以我用了两个工作日来解决这个问题。我们正在为地图自动渲染过程。所有的数据都是在sqlbase中给出的,我的工作是编写“包装器”,这样我们就可以在我们的内部框架中实现它。除了一个需要的请求外,我处理了所有请求。 该请求是POST featuretype,因为这是一种创建稍后可以渲染的层的方法

我将所有请求保存在postman中,以便对geoserver本身提供的示例数据进行预测试。我甚至无法得到状态代码为201的响应,并且总是得到500个内部服务器错误。此状态在sytax中描述为可能的语法错误。但实际上我只是复制和粘贴了示例,并使用了geoserver提供的数据

这是要求:

及其主体:

{
“名称”:“poi”,
“nativeName”:“poi”,
“命名空间”:{
“名称”:“老虎”,
“href”:”http://localhost:8080/geoserver/rest/namespaces/tiger.json"
},
“标题”:“曼哈顿(纽约)兴趣点”,
“摘要”:“纽约的兴趣点,纽约(曼哈顿)。其中一个属性包含带有兴趣点图片的文件名。”,
“关键词”:{
“字符串”:[
“poi”,
“曼哈顿”,
"杜波",,
“兴趣点”,
“sampleKeyword\\@language=ab\\;”,
“影响范围\\@语言=背景\\;\\@词汇=技术\\;”,
“Пцццц\\@language=ru\\\;\\\\@词汇表=友好\;”
]
},
“元数据链接”:{
“元数据链接”:[
{
“类型”:“文本/普通”,
“元数据类型”:“FGDC”,
“内容”:“www.google.com”
}
]
},
“数据链接”:{
“org.geoserver.catalog.impl.DataLinkInfoImpl”:[
{
“类型”:“文本/普通”,
“内容”:http://www.google.com"
}
]
},
“nativeCRS”:“GEOGCS[\“WGS 84\”、\n基准[\“1984年世界大地测量系统”、\n球体[\“WGS 84\”、6378137.0、298.257223563、权威[\“EPSG\”、“7030\”]、\n权威[\“EPSG\”、“6326\”]、\n大地质点[\“格林威治\”、0.0、权威[\“EPSG\”、“8901\”]、\n单位[\“度”、“度”、“0.017453251”、“东经”[\n],\n轴[\'Geodetic latitude\',NORTH],\n当局[\'EPSG\',\'4326\']],
“srs”:“EPSG:4326”,
“nativeBoundingBox”:{
“minx”:-74.0118315772888,
“maxx”:-74.00153046439813,
“米尼”:40.70754683896324,
“maxy”:40.719885123828675,
“crs”:“EPSG:4326”
},
“latLonBoundingBox”:{
“minx”:-74.0118315772888,
“maxx”:-74.00857344353275,
“米尼”:40.70754683896324,
“maxy”:40.711945649065406,
“crs”:“EPSG:4326”
},
“projectionPolicy”:“重新发布到声明中”,
“启用”:正确,
“元数据”:{
“条目”:[
{
“@key”:“kml.Regionatestragy”,
“$”:“外部排序”
},
{
“@key”:“kml.regionateFeatureLimit”,
"$": "15"
},
{
“@key”:“cacheAgeMax”,
"$": "3000"
},
{
“@key”:“咯咯笑”,
“$”:“正确”
},
{
“@key”:“kml.regionateAttribute”,
“$”:“名称”
},
{
“@key”:“已启用索引”,
“$”:“false”
},
{
“@key”:“dirName”,
“$”:“DS_poi_poi”
}
]
},
“商店”:{
“@class”:“数据存储”,
“名称”:“老虎:纽约市”,
“href”:”http://localhost:8080/geoserver/rest/workspaces/tiger/datastores/nyc.json"
},
“cqlFilter”:“包括”,
“maxFeatures”:100,
“numDecimals”:6,
“回应”:{
“字符串”:[
4326
]
},
“OverridingServices”:正确,
“SkipNumber匹配”:正确,
“CircularcPresent”:正确,
“线性化公差”:10,
“属性”:{
“属性”:[
{
“名称”:“the_geom”,
“最小值”:0,
“maxOccurs”:1,
“零”:对,
“绑定”:“com.lividsolutions.jts.geom.Point”
},
{},
{},
{}
]
}
}
所以这是一个示例,我无法从服务器获得任何有用的响应。我得到了代码500,其中bodyname(json中的第一项)。类似地,在尝试使用xml body(第一个标记)时,我得到了与bodyFeatureTypeInfo相同的代码

我已经在Docker中的geoserver新实例中尝试了该请求(更改了端口),但仍然没有成功

我检查数据存储、工作区是否可用,以及层“poi”是否还不存在

以下是一些请求日志(与xml正文类似):

2018-08-03 07:35:02198错误[geoserver.rest]- com.thoughtworks.xstream.mapper.CannotResolveClassException:名称位于 com.thoughtworks.xstream.mapper.DefaultMapper.realClass(DefaultMapper.java:79) 在


有没有人知道这个问题的解决方案并让它发挥作用。我正在使用GeoServer 2.13.1,所以我仍然在寻找答案,并使用本文()找到了发布featureType的正确内容,从而在GeoServer中创建了一个层

文档已关闭

使用上面的链接,我发现当使用JSON时,JSON中缺少一个插入。要使API在此处工作,我们需要添加:

{featureType:
名称:“…”,
nativeName:“…”,
.
.

.}
Blaz在这里是正确的,您需要一个FeatureType的外部对象,然后是配置中的内部对象。所以,

{
"featureType": {
    "name": "layer",
    "nativeName": "poi",
    "your config": "stuff"
}
我发现,尽管使用post请求,我得到的响应非常少,如果层创建成功,这并不明显。但是你可以打电话检查你的新图层是否在那里