2017-05-22 64 views
1

我試圖在使用GeoServer Rest的圖層上實現Get,Post,Put和Delete操作。GeoServer返回405:在POST方法中找不到方法

我能夠成功實現Get,Put和Delete方法。

但是當我試圖在圖層上實現Post方法時,GeoServer返回狀態碼:405,即Method Not Found。

這裏是我的代碼:

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

當我看到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 
+0

感謝您的鏈接。但我怎樣才能使用REST Api發佈圖層到地理服務器。 –

+0

您發佈了一個新功能類型,其中 爲您形成了新層。請參閱https://gis.stackexchange.com/questions/12970/create-a-layer-in-geoserver-using-rest –

相關問題