當我打電話時,我正在下面API回傳。我沒有從 webclient 得到適當的回應。我做錯了什么。我很新。responsepostman
{
"loginAccounts": [
{
"name": "Oracle",
"accountId": "16485679",
"baseUrl": "https://demo.docusign.net/restapi/v2.1/accounts/16485679",
"isDefault": "true",
"userName": "Mahima Pandey",
"userId": "e48dbc73-97df-42de-be9f-ea49c8b24712",
"email": "[email protected]",
"siteDescription": ""
}
]
}
當我使用 webclient 消費時。
public static Flux<LoginAccounts> retrieveDetails(){
Flux<LoginAccounts> loginAccounts=null;
WebClient webclient = WebClient.create();
try {
loginAccounts = webclient.get().uri(DocusignConstants.LOGIN_INFO_URL)
.header("Accept", "application/json")
.header("Authorization", "Bearer eyJ0eX...........")
.retrieve()
.bodyToFlux(LoginAccounts.class);
System.out.println(loginAccounts);
}
catch(WebClientResponseException ex) {
System.out.println(ex);
}
return loginAccounts;
}
這很簡單。MonoFlatMapMany我怎樣才能得到正確的回應?
我的 POJO 在下面。
@data
@Noargsconstructor
@Allargsconstructor
public class LoginAccounts {
private String name;
private String accountId;
private String baseUrl;
private Boolean isDefault;
private String userName;
private String userId;
private String email;
private String siteDescription;
}
如果我寫這行System.out.println(loginAccounts);它會列印
MonoFlatMapMany
但如果我使用 stram 它開始給出例外
loginAccounts.toStream().forEach(data -> System.out.println(data));
下面是例外。
org.springframework.web.reactive.function.client.WebClientRequestException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target; nested exception is javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
2022-06-21 11:09:50.494 WARN 20024 --- [ctor-http-nio-2] r.netty.http.client.HttpClientConnect : [099818dc, L:/172.20.10.3:58444 - R:demo.docusign.net/162.248.186.25:443] The connection observed an error
javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:131) ~[na:na]
at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:371) ~[na:na]
at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:314) ~[na:na]
at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:309) ~[na:na]
at java.base/sun.security.ssl.CertificateMessage$T13CertificateConsumer.checkServerCerts(CertificateMessage.java:1357) ~[na:na]
at java.base/sun.security.ssl.CertificateMessage$T13CertificateConsumer.onConsumeCertificate(CertificateMessage.java:1232) ~[na:na]
at java.base/sun.security.ssl.CertificateMessage$T13CertificateConsumer.consume(CertificateMessage.java:1175) ~[na:na]
at java.base/sun.security.ssl.SSLHandshake.consume(SSLHandshake.java:396) ~[na:na]
at java.base/sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:480) ~[na:na]
at java.base/sun.security.ssl.SSLEngineImpl$DelegatedTask$DelegatedAction.run(SSLEngineImpl.java:1277) ~[na:na]
at java.base/sun.security.ssl.SSLEngineImpl$DelegatedTask$DelegatedAction.run(SSLEngineImpl.java:1264) ~[na:na]
at java.base/java.security.AccessController.doPrivileged(AccessController.java:712) ~[na:na]
at java.base/sun.security.ssl.SSLEngineImpl$DelegatedTask.run(SSLEngineImpl.java:1209) ~[na:na]
從郵遞員那里我得到了適當的回應。
在此處輸入影像描述
uj5u.com熱心網友回復:
而不是System.out.println用于列印輸出。您可以使用回圈來列印值。
試試下面的代碼:
loginAccounts.toStream().forEach(data -> System.out.println(data));
uj5u.com熱心網友回復:
首先,您應該使用 SSL 解決您的問題。因此,將您的 SSL 證書匯入您的 certstore(在此處獲取靈感)。
第二件事是,如果您正在使用Flux它并不意味著可以立即獲得回應。你應該以某種方式得到它。你可以做類似的事情
List<LoginAccounts> accounts = loginAccounts.collectList().block();
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/494894.html
上一篇:控制器中的依賴注入問題
下一篇:如何控制WebTau報告
