我是Java EE的新手,正在尝试编写GET服务。要从Web服务获取值,我需要将主键作为参数发送到服务。我在服务器端的参数值上得到一个null。我知道我错过了一些基本的东西。
客户端Junit测试
//VehicleList
service = client.resource(UriBuilder.fromUri(
"http://localhost:8081/mCruiseOnCarPool4All/carpool4all/VehicleList/Request").build());
service.setProperty("identityHash", identityHash) ;
VehicleDetailsConcrete[] vehicleList = service.type(MediaType.APPLICATION_JSON).get(
VehicleDetailsConcrete[].class);
assertNotNull(vehicleList) ;
assertTrue(vehicleList.length > 0) ;
服务器端服务
@GET
@Path ("Request")
@Produces({ MediaType.APPLICATION_JSON })
public Response getVehicleList(@PathParam("identityHash") String identityHash) {
VehicleListRequest request = new VehicleListRequest(identityHash) ;
VehicleListResponse response ;
clientSession = sessionManager.getClientSession(identityHash) ;
clientSession.getSendQueue().sendRequest(request) ;
try {
response = (VehicleListResponse)clientSession.waitAndGetResponse(request) ;
} catch (WaitedLongEnoughException e) {
return Response.serverError().build() ;
} catch (UnableToResolveResponseException e) {
return Response.serverError().build() ;
};
return Response.ok(response).build();
}
getVehicleList中的identityHash为空
我正在使用setProperty,假设它会执行setParam。我确信这就是我所缺少的。一个setParameter有点调用。
答案 0 :(得分:2)
您使用的是错误的方法。 WebResource.setProperty
不用于设置查询参数。
我不确定你想要identityHash
。在@GET
方法中,您使用的是@PathParam
。但是此方法在{identityHash}
中没有@Path
。
因此,我假设您要使用@QueryParam
。
构建包含查询参数的URI
:
URI uri = new URI("http",
null,
"localhost",
8081,
"/mCruiseOnCarPool4All/carpool4all/VehicleList/Request",
"identityHash=YourIdentityHash",
null);
service = client.resource(uri);
注意强>
您不使用J2EE而是使用Java EE。 J2EE是Java EE 5之前使用的名称。