【发布时间】:2015-02-08 23:31:21
【问题描述】:
您好,我正在使用 restlet studio 从您的示例宠物商店 API 生成客户端和服务器。这是我的步骤:
- 生成 Java 服务器 (JAX-RS)
- 编辑 pom.xml 以制作 war 文件
- mvn 包
- 作为 webapp 部署到码头服务器
- 通过使用浏览器访问 URL 来验证它是否有效: http://54.149.215.125:8080/v2/pet/findByTags
回复:
{"code":4,"type":"ok","message":"magic!"}
- 此时我认为它可以工作,直到我用 Java 生成客户端
- 我将端点从 webnik 更改为我的网络服务器
-
制作一个简单的main方法
public static void main(String[] args) { try { FindPetByTagsClientResource a = new FindPetByTagsClientResource(); Pet represent = a.represent(); } catch (Exception ex) { Logger.getLogger(APIPetStore.class.getName()).log(Level.SEVERE, null, ex); } } 当我运行它时,我得到了这个:
运行: 启动内部 HTTP 客户端 空
Unprocessable Entity (422) - 服务器理解请求实体的内容类型并且请求实体的语法正确但无法处理包含的指令 在 org.restlet.resource.Resource.toObject(Resource.java:893) 在 org.restlet.engine.resource.ClientInvocationHandler.invoke(ClientInvocationHandler.java:326) 在 com.sun.proxy.$Proxy5.represent(未知来源) 在 net.apispark.webapi.client.FindPetByTagsClientResource.represent(FindPetByTagsClientResource.java:22) 在 apipetstore.APIPetStore.main(APIPetStore.java:28) 原因:java.io.IOException:无法创建对象表示 在 org.restlet.engine.converter.DefaultConverter.toObject(DefaultConverter.java:282) 在 org.restlet.service.ConverterService.toObject(ConverterService.java:229) 在 org.restlet.resource.Resource.toObject(Resource.java:889) ... 4 更多 引起:java.lang.IllegalArgumentException:序列化表示必须具有此媒体类型:application/x-java-serialized-object 或此:application/x-java-serialized-object+xml 在 org.restlet.representation.ObjectRepresentation.(ObjectRepresentation.java:221) 在 org.restlet.representation.ObjectRepresentation.(ObjectRepresentation.java:123) 在 org.restlet.representation.ObjectRepresentation.(ObjectRepresentation.java:104) 在 org.restlet.engine.converter.DefaultConverter.toObject(DefaultConverter.java:279) ... 6 更多 构建成功(总时间:0 秒)
-
把main方法改成这个就可以了:
public static void main(String[] args) { try { FindPetByTagsClientResource a = new FindPetByTagsClientResource(); a.getClientResource().get().write(System.out); } catch (Exception ex) { Logger.getLogger(APIPetStore.class.getName()).log(Level.SEVERE, null, ex); } } 输出:
启动内部 HTTP 客户端
{"code":4,"type":"ok","message":"magic!"}
关于如何解决此问题的任何想法?
【问题讨论】:
标签: rest jax-rs restlet swagger restlet-2.0