0

私はWebサービスを持っています:

@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のようなものになります。

Web サービスへの PUT 呼び出しを行うにはどうすればよいですか? queryParams を追加するメソッドがあり、addSegment を実行してパスに ID を追加することもできますが、その後 PUT を実行する必要があります。

4

2 に答える 2

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!";
    }
}

そしてレストレットで:

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