com.sun.jersey.api.client.UniformInterfaceException:myrequest返回的404响应状态未找到
问题描述:
myrequestcom.sun.jersey.api.client.UniformInterfaceException:myrequest返回的404响应状态未找到
POST http://someIPA:PORT/MyWARFILENAME/backend/Activation/Request
我得到了REST API调用404。这是我第一次尝试运行它。我知道我在这里错过了一些非常基本的东西。
Web.xml中
<servlet>
<servlet-name>Jersey REST Service</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.mycompany.backend.webservices</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/webservices/*</url-pattern>
</servlet-mapping>
服务代码
package com.mycompany.backend.webservices;
@Path("/Activation")
public class Activation {
@POST
@Path("Request")
@Consumes({ MediaType.APPLICATION_JSON })
public Response post(JAXBElement<CDeviceDetails> data) {
// Do my thing, set everything_is_ok to true/false
if (everything_is_ok)
return Response.ok(everthing).build();
else
return Response.notModified().build();
}
}
JUnit测试代码
//
// Activation Service
//
URI url = UriBuilder.fromUri(
"http://" + SERVER + "/MyWARFILENAME/backend/Activation/Request")
.build();
WebResource service = client.resource(url);
System.out.println(url);
// Get the data ready
CDeviceDetails newDevice = new CDeviceDetails(null, "mac id", "model",
"manufacturer", "androidVersion", Calendar.getInstance()
.getTime(), "buildID", "fingerPrint", "board",
"bootLoader", "hardware", "id", "product", "serial", Calendar
.getInstance().getTime(), Calendar.getInstance()
.getTime(), Globals.ACTIVE);
String deviceUniqueIdentity = service.type(MediaType.APPLICATION_JSON)
.post(String.class, newDevice);
assertNotNull(deviceUniqueIdentity);
System.out.println("Activation Passed " + deviceUniqueIdentity);
服务器侧日志/var/log/tomcat7/localhost_access_log.2014-09-28.txt
IPA - - [TIMESTAMP] “POST/MyWARFILENAME /后端/激活/请求HTTP/1.1” 404 1049
这意味着请求到达服务器。即使在//做我的事..有一个例外,它应该没有关系,我不应该得到一个404
。
我怀疑web.xml上有什么可疑的东西。
答
我通过web.xml映射从webservices
修改为backend
,它开始工作。
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/backend/*</url-pattern>
</servlet-mapping>
我不使用泽西岛,但我会想象URL模式'/ webservices/*'应该用作根。所以你可能想尝试在你尝试访问的路径中用'webservices'替换'backend'。 [**'404' **](http://en.wikipedia.org/wiki/HTTP_404)表示无法找到资源,如果uri路径不正确 – 2014-09-30 05:19:19