#XML请求的处理和服务
1.处理XML请求
xml请求是以有效的xml内容作为请求体的Http请求。它需要指定'text/xm"MIME类型的Content-Type头。
默认情况下,一个Action使用any content的BodyParser进行解析。你能把内容体转为XML。
public static index sayHello() {
Document dom = request().body().asXml();
if(dom == null) {
return badRequest("Expecting Xml data");
} else {
String name = XPath.selectText("//name", dom);
if(name == null) {
return badRequest("Missing parameter [name]");
} else {
return ok("Hello " + name);
}
}
}
更好更简单的办法是指定自己的BodyParser让Play直接把内容体解析为Xml:
@BodyParser.Of(Xml.class)
public static index sayHello() {
String name = XPath.selectText("//name", dom);
if(name == null) {
return badRequest("Missing parameter [name]");
} else {
return ok("Hello " + name);
}
}
住:这种方式下,非XML的请求会返回HTTP400状态。
在命令行下用cURL命令测试一下:
curl
--header "Content-type: text/xml"
--request POST
--data '<name>Guillaume</name>'
http://localhost:9000/sayHello
它会返回:
HTTP/1.1 200 OK
Content-Type: text/plain; charset=utf-8
Content-Length: 15
Hello Guillaume
2.提供XML响应
之前的例子,我们处理了Xml请求,但是返回的趋势"text/plain"的响应。我们把它变为返回有效的xml响应:
@BodyParser.Of(Xml.class)
public static index sayHello() {
String name = XPath.selectText("//name", dom);
if(name == null) {
return badRequest("<message \"status\"=\"KO\">Missing parameter [name]</message>");
} else {
return ok("<message \"status\"=\"OK\">Hello " + name + "</message>");
}
}
现在的返回是:
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: 46
<message status="OK">Hello Guillaume</message>
分享到:
相关推荐
### Play2.0 for Java Developers #### 概述 Play2.0是一个现代的Web应用框架,它基于Java和Scala语言构建,旨在提供简洁、快速且可扩展的应用开发体验。对于Java开发者而言,Play2.0提供了一套完整的Java API,...
框架id(framework ID) - 141 - 从命令行设置框架id - 142 - 22.生产部署 - 142 - application.conf - 142 - 设置框架为prod模式: - 142 - 定义一个真实的数据库: - 143 - 禁止JPA的自动结构更新: - 143 - 定义一...
Struts2.0是Java Web开发中非常重要的一个框架,它是Apache软件基金会的Jakarta项目下的一个产品。...同时,掌握Struts2.0的源码也有助于向更高层次的Java Web框架,如Spring MVC或Play Framework的迁移。
**下载链接**: [http://download.playframework.org/releases/play-2.0.zip](http://download.playframework.org/releases/play-2.0.zip) Play Framework 是一款基于Java和Scala的高性能、轻量级Web应用开发框架。...
Struts2.0 是一个基于MVC(Model-View-Controller)设计模式的Java Web应用程序...随着技术的发展,虽然现在有许多其他框架如Spring MVC和Play Framework等,但Struts2.0的历史地位和其对Java Web开发的贡献不容忽视。
Struts2.0 是一款基于MVC(Model-View-Controller)设计模式的Java Web框架,用于构建可...尽管随着时间的推移,Spring MVC和Play Framework等其他框架逐渐崛起,但Struts2在许多现有的项目中仍然占据着重要的地位。
That is where Apktool comes into play. $ apktool d testapp.apk I: Using Apktool 2.0.0 on testapp.apk I: Loading resource table... I: Decoding AndroidManifest.xml with resources... I: Loading ...
<groupId>org.springframework.boot <artifactId>spring-boot-starter-websocket ``` 2. **配置WebSocket**:在`application.yml`或`application.properties`中配置WebSocket的端点路径: ```yaml spring: web:...
但随着技术的发展,现在更多的开发者可能转向使用Spring Boot、Hibernate ORM(取代XFire的现代Web服务框架如Spring Web Services)和更新版本的Struts或替代品如Play Framework。 然而,由于描述中提到“jar自已去...
使用Scala的Framework 2.0 webapp。 它演示了Scala中的内置XML支持,以及Play中的异步结果! (目前已注释掉,因为它似乎无法在Heroku上运行,尽管它在其他情况下也很好用),表单提交,重定向,使用Ajax进行...
2. **服务器端集成**:它能够与多种服务器框架集成,如 Jersey、Spring MVC 和 Play Framework,帮助开发者快速构建符合 Swagger 规范的 REST 服务。 3. **文档生成**:通过解析源代码,Swagger Core 可以自动生成...
- **现代框架对比**:Struts 2与Spring MVC、Play Framework等现代框架相比,可能存在维护成本高、社区活跃度低等问题,开发者需要权衡选择。 总之,了解并掌握Struts的各个版本及其特性,对于理解Web开发的历史...
尽管现代开发中已经出现了更新、更灵活的框架,如Spring MVC和Play Framework,但Struts 1.3在它的时代是一个非常重要的里程碑,为许多现有企业应用奠定了基础。理解这些组件的工作原理对于维护和升级旧项目仍然具有...
Pac4J 是一个轻量级、可扩展的安全库,适用于多种 web 框架,如 Spring Security 和 Play Framework。JWT(JSON Web Token)则是一种安全地在各方之间传输信息的开放标准,常用于身份验证和授权。 在这个压缩包中,...
* Play Framework 分析这些 Web 框架的优缺点包括: * Spring MVC:优点是轻量级、灵活、可扩展性强;缺点是学习曲线陡峭 * Struts 2.0:优点是功能强大、可扩展性强;缺点是配置复杂、学习曲线陡峭 * Hibernate:...
5. **集成**: Swagger Core支持多种Web开发框架,如Java的Spring MVC、Play Framework,甚至Node.js和Ruby on Rails。这样,无论你使用哪种技术栈,都可以轻松地将Swagger集成到你的项目中。 6. **测试**: Swagger ...
但是,随着Struts 2的普及,许多开发者转向了更加现代的Web开发框架,如Spring MVC或Play Framework。尽管如此,对于维护旧的Struts 1.x应用或者对性能有较高要求的大型项目,EC标签仍然是一个非常实用的工具。
Play Framework支持RESTful架构,使得与后端API的交互更为简单,同时提供了一套强大的模板引擎,用于生成HTML、XML或其他类型的响应。 2. **React或Vue.js**:考虑到前端用户界面的复杂性,项目可能采用了React或...
我们可以使用`playSpeed`属性来改变播放速率,其值可以是1.0(正常速度)到2.0(两倍速)之间的任何浮点数。例如,将播放速度设置为1.5倍速: ```csharp player.playSpeed = "1.5"; ``` 为了确保变速播放的平滑,...