Jersey GET param返回null

时间:2012-10-25 06:42:22

标签: json java-ee jersey

我是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有点调用。

1 个答案:

答案 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之前使用的名称。