我有一个网络服务:
@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!";
}
}
我有一个restlet:
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。
答案 0 :(得分:0)
差不多试试
resource.put(representation);
表示是您的纯文本文档。可能是StringRepresentation
,但这取决于你。
答案 1 :(得分: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);