无法使用 POST 从 SOAP UI 访问 Restlet 服务

Cannot access Restlet service using POST from SOAP UI

我使用 Restlets 在 Java 中创建了一系列 REST 服务。这些服务中的大多数使用 JSON,我可以通过 GET 请求使用 SOAP UI 访问它们。但是,当我尝试使用 SOAP UI 访问基于 POST 的服务时,Representation 实体参数始终为空。我搜索了 Stack Overflow 和网络,但找不到任何我尚未完成或解决我的问题的内容。

这是 POST 资源的代码,它似乎总是收到一个空值 entity:

public class CreateAccountResource extends ServerResource {
    @Post("json")
    public Representation createAccount(Representation entity) throws IOException {
        String message = null;
        boolean result = true;

        try {
            String post = entity.getText();
            Object obj = new JSONParser().parse(post);
            JSONObject jsonObject = (JSONObject) obj;

            String username = (String) jsonObject.get("username");
            String password = (String) jsonObject.get("password");
            String email = (String) jsonObject.get("email");

            // more code
        }
        catch (Exception e) {
            // handle exception here
        }
    }
}

这是我的 SOAP UI 的屏幕截图,显示了我在发送请求时使用的配置:

如果您想知道,我在调试模式下使用 IntelliJ 检查 entity 的值,并且该项目使用 Maven。

我从不使用 Restlet 但是我认为既然您为 createAccount 方法指定了 @Post("json") 注释;该方法正在等待 POST 正文中的 json,而不是将值作为查询参数传递。

因此,您可能必须将带有查询参数的实际 POST 更改为对 URL http://localhost:8080/MyApp/service/createAccountPOST 调用,将正文中的参数作为 json:

{
      "username" : "tim",
      "password" : "password",
      "email" : "tim@me.com"
}

SOAPUI 中可能是这样的:

希望对您有所帮助,