繁体   English   中英

Restlet:具有多个参数的过帐

[英]Restlet: Post with multiple parameters

请看下面的例子:

public interface ILoginResource {

    @Post
    public void login(String username, String password);
}

public class LoginServerResource extends ServerResource implements ILoginResource { 
    @Override
    public void login(String username, String password) {   
        System.out.println("username = " + username);
        System.out.println("password = " + password);
    }   
}

public static void main(String[] args) {
    ClientResource loginResource = new ClientResource(url);
    ILoginResource res = loginResource.wrap(ILoginResource.class);
    res.login("TestUser","TestPassword");
}

输出为:
用户名= TestPassword
密码=空

我究竟做错了什么? 还是不能使用多个参数?

如您所料,确实不可能在单个调用中传递多个参数,而是可以引入如下消息类:

public class LoginRequest {

    private String username;

    private String password;

    /**
     * For deserialization.
     */
    public LoginRequest() {
    }

    /**
     * @param username
     *            The user's name
     * @param password
     *            The password
     */
    public LoginRequest(String username, String password) {
        this.username = username;
        this.password = password;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "LoginRequest [username=" + username + ", password=" + password + "]";
    }
}

并像这样修改您的资源:

public interface ILoginResource {
    @Post
    public void login(LoginRequest req);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM