2017-05-22 1 views
1

GeoServer Rest를 사용하여 레이어에 Get, Post, Put 및 Delete 작업을 구현하려고합니다.GeoServer가 405를 반환합니다. 메서드가 POST 메서드 중에 없습니다.

Get, Put 및 Delete 메서드를 성공적으로 구현할 수 있습니다.

하지만 레이어에 Post 메서드를 구현하려고 할 때 GeoServer는 상태 코드를 반환합니다 : 405 즉 메서드가 없습니다. 이 POST 메서드가

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 문서에 따라 :

여기 내 코드입니다. 그래서 문제는 분명히 내 편이니까 나는 그것을 발견 할 수 없다. 나는 또한 다른 사람들이 질문하는 것을 보았지만 그러한 해결책은 나에게 도움이되지 못했다.

도움을 주시면 감사하겠습니다.

답변

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

이 새 레이어를 형성하는 새로운 피처 유형을 POST합니다. https://gis.stackexchange.com/questions/12970/create-a-layer-in-geoserver-using-rest를 참조하십시오. –

관련 문제