我使用以下代码发送XML请求:
RestClient client = RestClientBuilder.builder()
.gatewayUrl(URL)
.build();
Mono<AuthorizeResponse> result = client.executeAndReceiveAuthorize(request);
response = result.block();
public RestClient(String gatewayUrl, String token, String username, String password, SslContext sslContext) {
this.token = token;
this.gatewayUrl = gatewayUrl;
WebClient.Builder builder = WebClient.builder().baseUrl(gatewayUrl);
if (sslContext != null) {
HttpClient httpClient = HttpClient.create().secure(sslContextSpec -> sslContextSpec.sslContext(sslContext));
ClientHttpConnector httpConnector = new ReactorClientHttpConnector(httpClient);
builder.clientConnector(httpConnector);
}
if (username != null && password != null) {
builder.filter(basicAuthentication(username, password));
}
client = builder.build();
}
public Mono<AuthorizeResponse> executeAndReceiveAuthorize(AuthorizeRequest transaction) {
Mono<AuthorizeRequest> transactionMono = Mono.just(transaction);
return client.post().uri(checkTrailingSlash(gatewayUrl) + token)
.header(HttpHeaders.USER_AGENT, "Mozilla/5.0")
.accept(MediaType.APPLICATION_XML)
.contentType(MediaType.APPLICATION_XML)
.body(transactionMono, AuthorizeRequest.class)
.retrieve()
.bodyToMono(AuthorizeResponse.class);
}
但有时我会犯这个错误:
org.springframework.web.reactive.function.client.WebClientResponseException$Unauthorized: 401 Unauthorized
at java.base/java.lang.Thread.run(Thread.java:834)
2019-08-27 22:05:45,720 ERROR [stderr] (processingTransactionGenesisAuthorizeContainer-1) Suppressed: java.lang.Exception: #block terminated with an error
Caused by: java.lang.NullPointerException: null
当我得到错误401时,我如何捕捉和处理异常?如果可能的话,我希望处理response=result.block();
行之后的异常。
首先,在反应代码中显式使用block
不是一个好主意。这背后的原因是,它将代码变成阻塞,而这并不是反应流的工作方式。因此,请删除response=result.block();
现在,如果希望处理特定状态,则可以修改ExecuteAndReceiveAuthorize
方法,以使用WebClient
的onStatus(谓词
public Mono<AuthorizeResponse> executeAndReceiveAuthorize (AuthorizeRequest transaction){
Mono<AuthorizeRequest> transactionMono = Mono.just(transaction);
return client.post().uri(checkTrailingSlash(gatewayUrl) + token)
.header(HttpHeaders.USER_AGENT, "Mozilla/5.0").accept(MediaType.APPLICATION_XML)
.contentType(MediaType.APPLICATION_XML).body(transactionMono, AuthorizeRequest.class)
.retrieve().onStatus(status -> status == HttpStatus.UNAUTHORIZED, clientResponse -> Mono
.error(new SomeCustomAuthorizationException("Some failure exception")))
.bodyToMono(AuthorizeResponse.class);
}
当我试图通过Java驱动程序进行身份验证时,我被超级卡住了o_0,捕捉异常时有一个问题。正如您可能看到的,即使类也不起作用 仍未捕获异常
在用户使用JNDIRealm身份验证登录Tomcat期间,我在Catalina日志中收到以下错误: 2018年6月26日12:08:29.547严重[http-nio-8080-exec-7]组织。阿帕奇。卡特琳娜。领域JNDIRealm。执行身份验证javax时发生身份验证异常。命名。AuthenticationException:[LDAP:错误代码49-80090308:LDAPPER:DS
我正在尝试使用paramiko对设备进行ssh操作,并在虚拟环境中使用以下代码运行一些命令 从getpass导入paramiko导入getpass 如果name==“main”: 当我尝试运行上面的代码时,我得到以下错误: 文件“param.py”,第14行,s.connect(hostname=主机名,username=用户名,password=密码)文件“/users/myuser/myvir
身份验证 PDF版下载 企业应用中的URL链接可以通过OAuth2.0验证接口来获取员工的身份信息。 通过此接口获取员工身份会有一定的时间开销。对于频繁获取员工身份的场景,建议采用如下方案: 企业应用中的URL链接直接填写企业自己的页面地址; 员工跳转到企业页面时,企业校验是否有代表员工身份的cookie,此cookie由企业生成; 如果没有获取到cookie,重定向到OAuth验证链接,获取员工
我正在使用DataStax驱动程序连接到Cassandra节点。下面是连接器的代码。 验证器:PasswordAuthenticator 调用connect方法时,显示以下错误: 主机LocalHost/127.0.0.1:9042上的身份验证错误:主机LocalHost/127.0.0.1:9042需要身份验证,但在群集配置中找不到身份验证器 编辑:异常堆栈位于
问题内容: 我正在尝试在Node.js中使用Socket.IO,并试图允许服务器为每个Socket.IO客户端赋予一个身份。由于套接字代码不在http服务器代码的范围内,因此无法轻松访问已发送的请求信息,因此我假设在连接期间需要将其发送出去。什么是最好的方法 1)将有关谁通过Socket.IO连接到服务器的信息 2)验证他们说的是谁(如果正在使事情变得更容易,我目前正在使用Express) 问题答