spring - httpclient发布基本身份验证
问题描述
有没有比所描述的更简单的方法来设置 http 客户端以进行抢先式基本身份验证。 我必须从我的 Spring Boot 服务发布到另一个外部服务,但这在我的尝试中是不可能的。我在这样做时犯了多大的错误。
CredentialsProvider provider = new BasicCredentialsProvider();
UsernamePasswordCredentials credentials = new UsernamePasswordCredentials("user1", "user1Pass");
provider.setCredentials(AuthScope.ANY, credentials);
HttpClient client = HttpClientBuilder.create().setDefaultCredentialsProvider(provider).build();
HttpPost httpPost = new HttpPost("http://91.204.239.42:8083/broker-api/send");
httpPost.setHeader("Content-type", "application/json");
try {
httpPost.setEntity(new StringEntity(json));
HttpResponse response = client.execute(httpPost);
int statusCode = response.getStatusLine().getStatusCode();
return statusCode;
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return 500;
这个堆栈跟踪
org.apache.http.conn.HttpHostConnectException: Connect to 91.204.239.42:8083 [/91.204.239.42] failed: Connection refused: connect
at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:156) ~[httpclient-4.5.9.jar:4.5.9]
at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:374) ~[httpclient-4.5.9.jar:4.5.9]
解决方案
我尝试了很多方法,但无济于事。然后我决定联系 api 制造商,他们会告诉我这个 api 只有在我们允许的情况下才有效。得到许可后,他开始工作。问题的原因是权限
推荐阅读
- google-cloud-platform - Google AI Platform VM 似乎不包含官方模型存储库
- javascript - Nodejs 在 BE 上生成文档并发送给用户(FE)
- python - 如何将列表的 OrderedDic 元素的特定值相加?
- javascript - NPM:多个同名的前钩子
- arrays - 检查一个字符串是否存在于一个数组中,仅对 C 中的 1 个有效字符串返回 true
- hadoop - 非字符串值在 Hive 中显示为 NULL
- visual-studio - 构建后应忽略子任务的退出代码
- node.js - 如何查询 Wikidata 以获取 Node.js 中所有人的列表?
- c# - Linux 上 .NET Core 中的 Windows 用户模拟?
- c# - 从它的客户端启动一个 gRpc 服务器