我正在构建一个 Spring WebClient,它在内部调用托管在不同服务器中的 REST API。为此,我需要向每个握手请求发送公钥 (.cert) 和私钥 (.key)。我不确定如何使用 Spring WebClient 做到这一点。
我尝试设置 WebClient,但对添加这种代码的和平感到震惊
网络客户端生成器
this.webCLient = WebClient.builder()
.baseUrl("https://some-rest-api.com")
.defaultHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON.toString())
.build();
Run Code Online (Sandbox Code Playgroud)
实际通话
this.webClient.get()
.uri("/getData")
.exchange()
.flatMap(clientResponse -> {
System.out.println(clientResponse);
return clientResponse.bodyToMono(MyClass.class);
});
Run Code Online (Sandbox Code Playgroud)
由于没有向请求添加证书,我在日志中收到握手错误
javax.net.ssl.SSLException: Received fatal alert: handshake_failure
Run Code Online (Sandbox Code Playgroud)
如何将这些证书添加到 WebClient 请求中,所以我没有收到此错误?我有证书,但不知道如何添加它。
我有一个用 C# 开发的 Windows 应用程序。我需要在那里执行 Google oAuth,以便我获取他们的个人资料。我不想让用户在我的 Windows 应用程序中输入他们的 Google 用户名和密码(当然用户不希望那样)。
我怎样才能做到这一点 ?
我尝试了 1.) 能够从我的 Windows 应用程序打开 Google 身份验证页面,但无法弄清楚如何将访问令牌传递给我的 Windows 应用程序。
任何输入/建议?
我一直在用 Java 开发 Rest API。我想将它们转换为异步。我看到的两个选项是 DeferredResult 和 CompletableFeature。
我似乎没有找到这两者之间的区别,以及何时选择另一个。
任何实时示例将不胜感激。
我使用 java 和 springboot 创建了一个简单的休息服务。这是我的服务层代码
@Service
class MyService {
private final TestService service;
@Autowired
public MyService(final TestService service) {
this.service = service;
}
// here is the issue
private final Predicate<User> userPredicate = (user) -> this.service.isValidUser(user);
}
Run Code Online (Sandbox Code Playgroud)
在上面的行中,抱怨变量服务的 ide 可能未初始化,并且我无法在谓词实现中使用它。我尝试删除服务中的final,这有效,但我不想删除TestService 声明中的final。
有人有什么解决办法吗?
我从2009年到2012年为C#,ASP.NET,JSP工作了几个项目.之后我更加了解Javascript,HTML,CSS,JQuery(前端开发).所以现在我想知道服务器端Web技术(ASP.NET,JSP,PHP)正在消亡吗?我问这个问题的原因是我可以在FrontEnd中完成任何类型的任务,而不是服务器端技术.
我看到许多现代网站(Facebook,谷歌,Gmail等)更多地进入FrontEnd开发.那么现在我还记得我在服务器端Web开发方面的所有知识,还是我必须更加关注前端开发以用于未来的Web开发?
欢迎任何形式的评论
编辑:是Node.js杀死Java,C#?
我创建了一个Spring webflux webclient。我想根据我的响应重复相同的操作。例如:如果数据仍然为空,我想重试以获取数据。怎么做 ?
Flux<Data> data = webClient.get()
.uri("/api/users?page=" + page)
.retrieve()
.flatMap(o -> {
o.subscribe(data -> {
if(data == null) {
// WHAT TO DO HERE, TO REPEAT THE SAME CALL ?
o.retry();
}
});
return o;
})
.bodyToFlux(Data.class);
Run Code Online (Sandbox Code Playgroud)