gpt4 book ai didi

rest - JAX RS 2 使用 Jersey 客户端获取 "HTTP 404 Not found "但相同的 URL 在浏览器上工作

转载 作者:行者123 更新时间:2023-12-01 10:47:48 24 4
gpt4 key购买 nike

我是 JAX RS 和 Jersey 2 的新手。我的简单休息资源服务器端程序“Hello World”工作正常,我可以通过任何浏览器和谷歌浏览器的 Advance Rest Client 应用程序访问它。

但是当我编写了一个 JAX RS Jersey 2 客户端时,它给了我 HTTP 404 Not found,以下是详细信息:

下面是剩余资源服务器端程序:

网页.xml:

http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"id="WebApp_ID"version="3.0">
ProJrsRi_HelloRest2

<servlet>
<servlet-name>jersey</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>jersey</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>



资源类
package     com;
import javax.ws.rs.GET;
import javax.ws.rs.Path;


@Path("hello")
public class HelloRest {

@GET()
public String sayHello(){
return "Welcome to the world of REST";
}
}

我的服务器端 Jar 文件列表
asm-3.1.jar
jackson-core-asl-1.9.2.jar
jackson-jaxrs-1.9.2.jar
jackson-mapper-asl-1.9.2.jar
jackson-xc-1.9.2.jar
jersey-client-1.18.jar
jersey-core-1.18.jar
jersey-json-1.18.jar
jersey-server-1.18.jar
jersey-servlet-1.18.jar
jettison-1.1.jar

它在浏览器中运行良好。

这是客户端:
 package userCoreJava;

import java.net.URI;
import java.net.URISyntaxException;

import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.Invocation.Builder;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.Response;



public class UsingJersey {
public static void main(String[] args) {
Client client = ClientBuilder.newClient();
WebTarget target=null;
try {
target = client.target(new URI("http://localhost:8080/ProJrsRi_HelloRest2/rest/hello"));
} catch (URISyntaxException e) {
e.printStackTrace();
}
Builder builder = target.request();
//Response response = builder.get();
String result = builder.get(String.class);
System.out.println(target.getUri().toString());
System.out.println("Result=" + result);

}
}

客户端 jar 列表:
asm-all-repackaged-2.2.0-b21.jar
cglib-2.2.0-b21.jar
guava-14.0.1.jar
hk2-api-2.2.0-b21.jar
hk2-locator-2.2.0-b21.jar
hk2-utils-2.2.0-b21.jar
javax.annotation-api-1.2.jar
javax.inject-2.2.0-b21.jar
javax.servlet-api-3.0.1.jar
javax.ws.rs-api-2.0.jar
jaxb-api-2.2.7.jar
jersey-client.jar
jersey-common.jar
jersey-container-servlet-core.jar
jersey-container-servlet.jar
jersey-server.jar
org.osgi.core-4.2.0.jar
osgi-resource-locator-1.0.1.jar
persistence-api-1.0.jar
validation-api-1.1.0.Final.jar

但是当我运行这个 main 方法时,得到 404 异常如下:
    Exception in thread "main" javax.ws.rs.NotFoundException: HTTP 404 Not found
at org.glassfish.jersey.client.JerseyInvocation.convertToException(JerseyInvocation.java:917)
at org.glassfish.jersey.client.JerseyInvocation.translate(JerseyInvocation.java:770)
at org.glassfish.jersey.client.JerseyInvocation.access$500(JerseyInvocation.java:90)
at org.glassfish.jersey.client.JerseyInvocation$2.call(JerseyInvocation.java:671)
at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
at org.glassfish.jersey.internal.Errors.process(Errors.java:228)
at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:422)
at org.glassfish.jersey.client.JerseyInvocation.invoke(JerseyInvocation.java:667)
at org.glassfish.jersey.client.JerseyInvocation$Builder.method(JerseyInvocation.java:396)
at org.glassfish.jersey.client.JerseyInvocation$Builder.get(JerseyInvocation.java:296)
at userCoreJava.UsingJersey.main(UsingJersey.java:25)

请帮我解决这个问题,我陷入了困境。

提前致谢 !!!

最佳答案

您应该进一步研究 Jersey 客户端的 API 文档 ( https://jersey.java.net/documentation/latest/user-guide.html#client )。乍一看,您似乎在定义 WebTarget 时犯了一个错误。 ,即您需要定义 target (Web 服务端点)然后是 resource (您要与之交互的特定资源),因此您应该具有以下内容:

Client client = ClientBuilder.newClient();
WebTarget target = client
.target("http://localhost:8080/ProJrsRi_HelloRest2/rest").path("hello");

可能这就是为什么您可以在浏览器上看到结果但在 Java 应用程序中看不到的原因...

您还可以在文档中找到一些非常好的代码示例。

哈。

关于rest - JAX RS 2 使用 Jersey 客户端获取 "HTTP 404 Not found "但相同的 URL 在浏览器上工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23946308/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com