无法使用 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/createAccount
的 POST
调用,将正文中的参数作为 json
:
{
"username" : "tim",
"password" : "password",
"email" : "tim@me.com"
}
在 SOAPUI 中可能是这样的:
希望对您有所帮助,
我使用 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/createAccount
的 POST
调用,将正文中的参数作为 json
:
{
"username" : "tim",
"password" : "password",
"email" : "tim@me.com"
}
在 SOAPUI 中可能是这样的:
希望对您有所帮助,