从 ws.url 获取空指针异常
Getting null pointer exception from ws.url
@Inject
private WSClient ws;
@Override
public void getTerminalDetails(String terminalId, String institutionId) {
String url = "http://localhost:8089/getDetails";
WSRequest request = ws.url(url);
CompletionStage<WSResponse> wsResponse = request.get();
}
我收到以下错误:
Caused by: java.lang.NullPointerException: null
at service.impl.TerminalDetailsServiceImpl.getTerminalDetails(TerminalDetailsServiceImpl.java:25)
第 25 行是:
WSRequest request = ws.url(url);
谁能帮我看看我哪里出错了。我是从 SpringBoot 迁移过来的 Play 框架的新手。
问题是我没有按照 VM4 的指示声明注入构造
代码块应该是这样的:
public class DetailsServiceImpl implements DetailsService,WSBodyReadables {
private final WSClient ws;
private final Config config;
@Inject
public DetailsServiceImpl(WSClient ws, Config config) {
this.ws = ws;
this.config = config;
}
@Override
public GetDetailsResonse getDetails(String param1) {
WSRequest request = ws.url("URL here").setRequestTimeout(Duration.of(5000, ChronoUnit.MILLIS));
CompletionStage<JsonNode> response = request.get().thenApply(wsResponse -> wsResponse.getBody(json()));
log.info(response.toString());
GetDetailsResonse getDetailsResonse = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false).convertValue(response.toCompletableFuture().join(), GetDetailsResonse.class);
return getDetailsResonse ;
}
@Inject
private WSClient ws;
@Override
public void getTerminalDetails(String terminalId, String institutionId) {
String url = "http://localhost:8089/getDetails";
WSRequest request = ws.url(url);
CompletionStage<WSResponse> wsResponse = request.get();
}
我收到以下错误:
Caused by: java.lang.NullPointerException: null at service.impl.TerminalDetailsServiceImpl.getTerminalDetails(TerminalDetailsServiceImpl.java:25)
第 25 行是:
WSRequest request = ws.url(url);
谁能帮我看看我哪里出错了。我是从 SpringBoot 迁移过来的 Play 框架的新手。
问题是我没有按照 VM4 的指示声明注入构造
代码块应该是这样的:
public class DetailsServiceImpl implements DetailsService,WSBodyReadables {
private final WSClient ws;
private final Config config;
@Inject
public DetailsServiceImpl(WSClient ws, Config config) {
this.ws = ws;
this.config = config;
}
@Override
public GetDetailsResonse getDetails(String param1) {
WSRequest request = ws.url("URL here").setRequestTimeout(Duration.of(5000, ChronoUnit.MILLIS));
CompletionStage<JsonNode> response = request.get().thenApply(wsResponse -> wsResponse.getBody(json()));
log.info(response.toString());
GetDetailsResonse getDetailsResonse = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false).convertValue(response.toCompletableFuture().join(), GetDetailsResonse.class);
return getDetailsResonse ;
}