0
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上有什麼可疑的東西。
我不使用澤西島,但我會想象URL模式'/ webservices/*'應該用作根。所以你可能想嘗試在你嘗試訪問的路徑中用'webservices'替換'backend'。 [**'404' **](http://en.wikipedia.org/wiki/HTTP_404)表示無法找到資源,如果uri路徑不正確 – 2014-09-30 05:19:19