Spring Boot geoserver 编辑/添加样式

问题描述 投票:0回答:1

我希望在 Spring Boot 的 geoserver Rest api 中编辑并添加新样式。

我的代码给出错误 500。如果您知道如何制作,请告诉我。当然如果你有不同的方法也请展示一下。

package exp;

import org.springframework.http.*;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

import java.net.URI;
@Component
@RestController
public class GeoserverEdit {
@GetMapping("/addStyle")
public void addStyle() {
    String geoServerUrl = "http://10.56.56.66:8081/geoserver";
    String workspace = "your_workspace";
    String styleName = "your_style";
    String newStyleContent = "<StyledLayerDescriptor>...</StyledLayerDescriptor>";

    RestTemplate restTemplate = new RestTemplate();

    HttpHeaders headers = new HttpHeaders();
    headers.setContentType(MediaType.APPLICATION_XML);
    headers.setBasicAuth("geoserver", "geoserver");

    String styleUrl = geoServerUrl + "/rest/workspaces/" + workspace + "/styles/" + styleName + ".xml";
    URI updateUri = URI.create(styleUrl);

    RequestEntity<String> requestEntity = new RequestEntity<>(newStyleContent, headers, HttpMethod.PUT, updateUri);

    ResponseEntity<String> response = restTemplate.exchange(requestEntity, String.class);

    if (response.getStatusCode().is2xxSuccessful()) {
        System.out.println("Styl został zaktualizowany pomyślnie.");
    } else {
        System.out.println("Wystąpił błąd podczas aktualizacji stylu.");
    }
}

}
spring-boot rest resttemplate geoserver
1个回答
1
投票
RequestEntity<String> requestEntity = new RequestEntity<>(newStyleContent, headers, HttpMethod.PUT, updateUri);

ResponseEntity<String> response = restTemplate.exchange(requestEntity, String.class);

您正在 requestEntity 中设置 Http put 方法和 uri。 请将您的 Http 方法放入交换方法中。

你的方法看起来像这样,

您可以使用 HttpEntity 代替 RequestEntity。

HttpEntity<String> requestEntity = new HttpEntity<>(newStyleContent, headers);

ResponseEntity<String> response = restTemplate.exchange(updatedUri.getPath(),HttpMethod.put,requestEntity, String.class);

希望这有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.