gpt4 book ai didi

java - 使用 vert.x 的 http 基本认证

转载 作者:搜寻专家 更新时间:2023-10-31 08:12:16 25 4
gpt4 key购买 nike

我正在使用内置的 httpclient 向需要身份验证的外部服务发出“get”查询。更具体地说,我正在尝试从我的服务中向 splunk 提交查询。如何在请求中传递用户凭据?我想使用基本身份验证而不是处理身份验证 token 。

最佳答案

基本身份验证都是关于授权 header 的。

您应该添加该 header ,其值由“basic”(注意空白)和以 base64 编码的 login:pass(以冒号分隔)组成。这仅在您使用 HTTPS 时是安全的。

这是我在 vert.x 中完成此操作的方法:

HttpClient client = vertx.createHttpClient().setSSL(true)
.setTrustAll(true) //You may not want to trust them all
.setHost("api.myawesomeapi.com")
.setPort(443);
HttpClientRequest clientRequest = client.get("/"+action+"/?"+params, new Handler<HttpClientResponse>() {
public void handle(final HttpClientResponse response) {
if (response.statusCode==200){
// It worked !
} else {
// Oops
}
}
});

clientRequest.putHeader(HttpHeaders.Names.AUTHORIZATION, "Basic "+base64key);

这里我已经有了 base64key,但如果我必须创建它,我会使用类似的东西:

base64key = Base64.encodeBytes(new StringBuilder(apiKey).append(":").append(secretKey).toString().getBytes(), Base64.DONT_BREAK_LINES);

如果您使用 POST 而不是 get,请不要忘记添加所需的 header :

clientRequest.putHeader(HttpHeaders.Names.CONTENT_LENGTH, String.valueOf(params.getBytes().length))
.putHeader(HttpHeaders.Names.CONTENT_TYPE, "application/x-www-form-urlencoded")
.write(params);

希望对你有帮助

雨果

关于java - 使用 vert.x 的 http 基本认证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16176927/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com