Java 在play framework中调用webservice时出现NullPointer异常
这个节目有什么问题吗 在2.4.3版的play framework中调用web服务时,我遇到了Java 在play framework中调用webservice时出现NullPointer异常,java,web-services,playframework,Java,Web Services,Playframework,这个节目有什么问题吗 在2.4.3版的play framework中调用web服务时,我遇到了nullPointerException package com.enkindle.box; import javax.inject.Inject; import play.libs.ws.WSClient; /** * @author thirumal * */ public class Sample { @Inject WSClient ws; public static vo
nullPointerException
package com.enkindle.box;
import javax.inject.Inject;
import play.libs.ws.WSClient;
/**
* @author thirumal
*
*/
public class Sample {
@Inject WSClient ws;
public static void main(String[] args) {
Sample sample = new Sample();
sample.callAPI();
}
public void callAPI() {
ws.url("www.thomas-bayer.com/sqlrest/CUSTOMER/").get();
}
}
问题是您的
Sample
类在依赖项注入的上下文中不可用-我假设是Guice。有几种方法可以解决这个问题,但最简单的方法是创建一个Sample
接口,并使用Guice绑定它的实现SampleImpl
,以便它可以用于注入的依赖项。我将假设这是从一个控制器生成的,因此您可以将Sample
注入到您的控制器中,然后点击callApi()
方法
控制器:
public class SampleController extends Controller {
@Inject Sample sample;
public Promise<Result> apiCall() {
sample.callApi();
return promise(() -> ok());
}
}
以及接口实现:
public class SampleImpl implements Sample {
@Inject WSClient ws;
@Override
public void callApi() {
// ws should not be null
ws.url("www.thomas-bayer.com/sqlrest/CUSTOMER/").get();
}
}
参考文档:或者他可以扩展控制器。但是根据接口编写代码是很好的。
public class SampleImpl implements Sample {
@Inject WSClient ws;
@Override
public void callApi() {
// ws should not be null
ws.url("www.thomas-bayer.com/sqlrest/CUSTOMER/").get();
}
}