繁体   English   中英

使用Restlet ClientResource无法将实体发送到Restlet服务

[英]Using Restlet ClientResource cannot send entity to Restlet Service

我在使用Restlet客户端调用正常的休息服务时遇到问题:

    final ClientResource resource = new ClientResource(Routes.PUBLIC_STORE_API);
    resource.setOnResponse(new Uniform() {
        public void handle(Request request, Response response) {
            try {
                Status status = response.getStatus();
                if(!Status.isError(status.getCode())){
                    String jsonResponse = response.getEntity().getText();
                } else {
                    // Handle error
                }
            } catch (Exception e){
                callback.failure(new Throwable(e.getMessage()));
            }
        }
    });
    JsniHelper.consoleLog("Adding object id=" + id + " type=" + type + " data=" + jsonObject);
    resource.getReference().addQueryParameter("type", type);
    resource.getReference().addQueryParameter("id",id);
    resource.post(jsonObject, MediaType.APPLICATION_JSON);

在日志上方,该对象是有效的JSON字符串。

Restlet ServerResource既可以获取id ,也可以获取String type但是该实体始终为null

@Post("json")
public Representation add(Representation entity){ // omitted }

我尝试使用CURL,并且Rest服务能够正确处理JSON字符串。

我在GWT中的代码可能是什么问题?

更新:我在POM中有这个

  <dependency>
      <groupId>org.restlet.gae</groupId>
      <artifactId>org.restlet.ext.gwt</artifactId>
      <version>2.2-RC3</version>
  </dependency>

为了使此调用运行,请执行以下操作:

  • 将取自GWT版本的框架的Json扩展(org.restlet.ext.json.jar)添加到您的项目中
  • 将以下依赖项添加到您的GWT模块中

  • 然后更新您的代码,如下所示:

    resource.post(新的JsonRepresentation(MediaType.APPLICATION_JSON,jsonObject));

我注意到,如果您发送表示形式而不是对象,则它可以工作。 主要问题是,在处理对象时,核心模块不会如何对其进行序列化。 在JVM中,我们可以插入一个服务,该服务发现可用的转换器,这些转换器自动将Bean转换为表示形式,而我们无法使用GWT来实现。

话虽这么说,我认为您可以通过使用Bean来以更简单的方式集成客户端和服务器代码。 GWT客户端代码可以使用特定的GWT序列化格式进行通信,其他任何客户端代码也可以使用JSON进行通信。

看看下面的代码: http : //restlet.com/technical-resources/restlet-framework/guide/2.3/introduction/first-steps/first-application

暂无
暂无

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

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