1

我是 Java EE 的新手,正在尝试编写 GET 服务。要从 Web 服务获取值,我需要将主键作为参数发送到服务。我在服务器端的参数值上得到一个空值。我知道我在这里缺少一些基本的东西。

客户端 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 有点像调用。

4

1 回答 1

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

于 2012-10-25T07:22:24.727 回答