0

我有一个网络服务:

@Path("/")
@RequestScoped
public class RegistrationService implements Serializable {

    @Inject
    private DeviceService deviceService;

    @PUT
    @Path( "/register/{device}" )
    @Consumes( MediaType.TEXT_PLAIN )
    @Produces( MediaType.TEXT_PLAIN )
    public String device(@PathParam("device") String device) {
        this.deviceService.saveNewDevice(device);
        return "Succesful!";
    }
}

我有一个休息:

public void sendRegistration() {
    ClientResource resource = new ClientResource(REG_URL);
    resource.addSegment(ctx.getString(R.string.config_segment_register));
    ... (?)
}

所以当前的 URL 将类似于 http://host:port/application/ws/ register / pathParam

如何对网络服务进行 PUT 调用?有添加 queryParams 的方法,我可以做 addSegment 将 ID 附加到路径,但不知何故我需要做 PUT。

4

2 回答 2

0

几乎在那里尝试

resource.put(representation);

其中表示是您的纯文本文档。可能是一个StringRepresentation,但这取决于你。

于 2013-08-14T10:46:47.260 回答
0

由于不幸没有开始工作(可能是因为对 API 和处理的了解/理解太少)@Caleryn 的建议,我对https://stackoverflow.com/a/735090/1343241提出了一些类似的解决方案

@Path("/")
@RequestScoped
public class RegistrationService implements Serializable {

    @Inject
    private DeviceService deviceService;

    @PUT
    @Path( "/register" )
    @Consumes( MediaType.APPLICATION_FORM_URLENCODED )
    @Produces( MediaType.TEXT_PLAIN )
    public String device(@FormParam("regId") String regId) {
        this.deviceService.saveNewDevice(regId);
        return "Succesful!";
    }
}

在restlet中:

Form queryParams = resource.getReference().getQueryAsForm();
queryParams.set("regId", regId);
resource.put(queryParams);
于 2013-08-16T05:01:11.910 回答