GeoServer返回405:在POST方法期间找不到方法

时间:2017-05-22 12:58:30

标签: rest asp.net-core-1.0 geoserver

我正在尝试使用GeoServer Rest在图层上实现Get,Post,Put和Delete操作。

我能够成功实现Get,Put和Delete方法。

但是当我尝试在图层上实现Post方法时,GeoServer会返回状态代码:405,即找不到方法。

  

这是我的代码:

    public async Task<IActionResult> PostLayer(string layerName)
    {
        var authValue = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(Encoding.UTF8.GetBytes("admin:geoserver")));
        try
        {
            var client = new HttpClient()
            {
                DefaultRequestHeaders = { Authorization = authValue }
            };
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            client.BaseAddress = new Uri("http://localhost:8080");
            var stringContent = new StringContent(@"C:\Users\i2vsys\Desktop\test.kml");

            var response = await client.PostAsync($"/geoserver/rest/layers/{layerName}",stringContent);
            response.EnsureSuccessStatusCode();
            var stringResponse = await response.Content.ReadAsStringAsync();
            return Ok(stringResponse);
        }
        catch (HttpRequestException ex)
        {
            return BadRequest(ex.Message);
        }
    }

但根据GeoServer api文档,它有POST方法。所以,问题肯定是在我身边,我无法找到。我也看到其他问题,但这些解决方案对我不起作用。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

当我查看layers documentation时,我看不到对POST请求的引用。你希望POST能做什么?

要创建新图层,请先按示例中的说明create a new DataStore创建。使用一些东西:

curl -v -u admin:geoserver -XPUT -H "Content-type: application/zip"
  --data-binary @roads.zip http://localhost:8080/geoserver/rest/workspaces/acme/datastores/roads/file.shp