【问题标题】:Cannot access Restlet service using POST from SOAP UI无法使用 SOAP UI 中的 POST 访问 Restlet 服务
【发布时间】:2016-08-31 16:58:46
【问题描述】:

我使用 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。

【问题讨论】:

  • 当您说 POST 请求时,在屏幕截图中没有看到任何请求?

标签: json post soapui restlet


【解决方案1】:

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

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

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

SOAPUI 中可能是这样的:

希望对你有帮助,

【讨论】:

  • 今晚我将对此进行测试,如果成功,您将获得 25 分。
  • 好的 @TimBiegeleisen 我希望这能解决您的问题:),感谢您的反馈
  • 这是一个非常有用的答案,它可以让我现在端到端测试我的所有 Web 服务(我以前只能测试 GET 服务)。再次感谢。
  • @TimBiegeleisen 很高兴为您提供帮助 :)
猜你喜欢
  • 1970-01-01
  • 2016-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-04
相关资源
最近更新 更多