我正在尝试创建一个简单的客户端,该客户端可以将get请求发送到给定的url。我正在尝试使用javax工具,但遇到奇怪的行为,无法在任何地方找到答案。
我的代码如下:
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.Invocation;
import javax.ws.rs.client.Invocation.Builder;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
public static Response processRequest(String url, String method) {
Client client = ClientBuilder.newClient(); // (Http.java:44)
WebTarget target = client.target(url);
Builder builder = target.request();
builder.header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON);
Invocation Invo = builder.buildGet();
Response res = Invo.invoke();
return res;
}
您可以看到我正在使用javax.ws.rs.core
库,所有相关的依赖项都在pom.xml中
这里很奇怪的问题是,当我执行代码时,它因以下错误而失败-
java.lang.RuntimeException: java.lang.ClassNotFoundException: org.glassfish.jersey.client.JerseyClientBuilder
at javax.ws.rs.client.ClientBuilder.newBuilder(ClientBuilder.java:110)
at javax.ws.rs.client.ClientBuilder.newClient(ClientBuilder.java:121)
at scr.cps.utils.Http.processRequest(Http.java:44)
at scr.cps.utils.Http.doGet(Http.java:69)
at scr.cps.Main.main(Main.java:29)
Caused by: java.lang.ClassNotFoundException: org.glassfish.jersey.client.JerseyClientBuilder
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at javax.ws.rs.client.FactoryFinder.newInstance(FactoryFinder.java:111)
at javax.ws.rs.client.FactoryFinder.find(FactoryFinder.java:209)
at javax.ws.rs.client.ClientBuilder.newBuilder(ClientBuilder.java:94)
有人可以帮我理解为什么我从org.glassfish.jersey.client.JerseyClientBuilder
清楚地导入时为什么我要寻找import javax.ws.rs.client.ClientBuilder;
的原因。我在代码中的任何地方都没有使用球衣
我正在尝试创建一个简单的客户端,该客户端可以将get请求发送到给定的url。我正在尝试使用javax工具,但遇到奇怪的行为,无法在任何地方找到答案。。我的代码看起来...
ClientBuilder默认使用泽西岛的JerseyClientBuilder类(显然,您必须使用作为ClientBuilder子类的类),因此正在寻找它。我选择使用ResteasyClient执行我的请求。