我希望在 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.");
}
}
}
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);
希望这有帮助。