Spring Boot实现该命令的HTTP选项头文件中带有凭据的方式
问题描述:
我是Spring Boot的新手,但我之前在HTTP OPTIONS命令中使用过Java。Spring Boot实现该命令的HTTP选项头文件中带有凭据的方式
我在构建一个服务方法,它接受一个URL并使用HTTP OPTIONS命令测试该URL。
下面是我自己编写使用Java:
import java.net.HttpURLConnection;
import java.net.URL;
...
public String testConnection(URL url) {
try {
String type = "text/plain;charset=UTF-8";
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("OPTIONS");
conn.setRequestProperty("Content-Type", type);
System.out.println(String.format("HTTP %d: %s",
conn.getResponseCode(), conn.getResponseMessage()));
for(String header : conn.getHeaderFields().keySet()){
System.out.println(String.format("%s : %s",
header, conn.getHeaderFields().get(header)));
}
String rMessage = conn.getResponseMessage();
System.out.println ("Response " + rMessage);
} catch (Exception e) {
e.printStackTrace();
}
}
}
是否有执行HTTP OPTIONS请求的弹簧引导等价的方式?如果是这样,我还可以在请求中添加凭证(用户名和密码)到头部吗?谢谢。
答
您可以使用Spring Boot的RestTemplate
:
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
// skipping class definition here, just showing the method call
private void optionsCall() {
final String url = "https://some.server/with/some/path";
final String user = "theUser";
final String password = "thePassword";
final String authHeaderValue = "Basic " + Base64.getEncoder()
.encodeToString((user + ':' + password).getBytes());
final HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.set("Authorization", authHeaderValue);
RestTemplate rest = new RestTemplate();
final ResponseEntity<Object> optionsResponse =
rest.exchange(url, HttpMethod.OPTIONS,
new HttpEntity<>(requestHeaders),
Object.class);
optionsResponse.getHeaders().forEach((key, value) -> log.info("{} -> {}", key, value));
}
我使用Object
这里为响应身型,通常一个OPTION请求没有返回的东西,但它并不禁止这样做,和exchange
方法想要在那里上课。我使用slf4j Logger记录返回的头文件。使用https和基本身份验证对服务进行测试。