java - 如何在 Resttemplate Spring 中进行操作

标签 java resttemplate

curl -u "uname:password" -H "X-Requested-With: Curl" -X "POST" "https://qualysapi.qg2.apps.qualys.eu/qps/rest/3.0/search/was/wasscan/" > was_finding.txt

如何在 Spring Rest 模板中做同样的事情,

curl -u "uname:password" -H "X-Requested-With: Curl" -X "POST" "https://qualysapi.qg2.apps.qualys.eu/qps/rest/3.0/search/was/wasscan/" > was_finding.txt

最佳答案

嗯,我不知道为什么你有两次相同的请求。无论如何,您需要启动一个可以重用的 REST 客户端,然后将其用作任何调用的简单 http 客户端:

// Do once
HttpClient client = HttpClients.createDefault();
HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory(client);
RestTemplate restTemplate = new RestTemplate(new BufferingClientHttpRequestFactory(factory));

// Do anytime
byte[] plainCredsBytes = "uname:password".getBytes();
byte[] base64CredsBytes = Base64.encodeBase64(plainCredsBytes);
String base64Creds = new String(base64CredsBytes);

HttpHeaders headers = new HttpHeaders();
headers.add("Authorization", "Basic " + base64Creds);

ResponseEntity<String> response = restTemplate.postForEntity(
        "https://qualysapi.qg2.apps.qualys.eu/qps/rest/3.0/search/was/wasscan/",
        new HttpEntity(headers), String.class);

if (response.getStatusCode() == HttpStatus.OK) {
    Files.writeString(Paths.get("was_finding.txt"), response.getBody());
} else {
    // Handle status code, etc.
}

如果您需要设置 SSL,那么您需要在构建客户端之前创建一个 SSLContextBuilder,仅此而已。

关于java - 如何在 Resttemplate Spring 中进行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57371485/

相关文章:

Java 和 SDL_GetKeyState()

java - SimpleJdbcCall:读取从存储过程返回的 CLOB

spring-boot - 通过resttemplate.exchange传递的参数没有在服务端自动解码

java - 如何从gson获取嵌套数据?

java - 使用 spring RestTemplate 的休息客户端最佳实践

Java 小服务程序 : How to share common behaviour among multiple servlets?

java - Libgdx Box2d body 沿线性方向移动?

java - 是什么导致了 java.lang.ArrayIndexOutOfBoundsException 以及如何防止它?

java - RestTemplate:如何一起发送 URL 和查询参数

java - 如何使用错误响应休息模板处理 200 状态代码?