`

Play framework 2.0 -XML

 
阅读更多

 

#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>
 

 

0
0
分享到:
评论

相关推荐

    play2.0 for java developers.pdf

    ### Play2.0 for Java Developers #### 概述 Play2.0是一个现代的Web应用框架,它基于Java和Scala语言构建,旨在提供简洁、快速且可扩展的应用开发体验。对于Java开发者而言,Play2.0提供了一套完整的Java API,...

    play框架手册

    框架id(framework ID) - 141 - 从命令行设置框架id - 142 - 22.生产部署 - 142 - application.conf - 142 - 设置框架为prod模式: - 142 - 定义一个真实的数据库: - 143 - 禁止JPA的自动结构更新: - 143 - 定义一...

    struts2.0源代码

    Struts2.0是Java Web开发中非常重要的一个框架,它是Apache软件基金会的Jakarta项目下的一个产品。...同时,掌握Struts2.0的源码也有助于向更高层次的Java Web框架,如Spring MVC或Play Framework的迁移。

    java开源框架下载集合

    **下载链接**: [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配置

    Struts2.0 是一个基于MVC(Model-View-Controller)设计模式的Java Web应用程序...随着技术的发展,虽然现在有许多其他框架如Spring MVC和Play Framework等,但Struts2.0的历史地位和其对Java Web开发的贡献不容忽视。

    struts2.0第一讲

    Struts2.0 是一款基于MVC(Model-View-Controller)设计模式的Java Web框架,用于构建可...尽管随着时间的推移,Spring MVC和Play Framework等其他框架逐渐崛起,但Struts2在许多现有的项目中仍然占据着重要的地位。

    apktool documentation

    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 ...

    springBoot2.0整合webSocket 服务器主动推送数据到前端,并且弹框提示带有音乐提醒

    &lt;groupId&gt;org.springframework.boot &lt;artifactId&gt;spring-boot-starter-websocket ``` 2. **配置WebSocket**:在`application.yml`或`application.properties`中配置WebSocket的端点路径: ```yaml spring: web:...

    spring2.0 hibernate 3.0 struts1.1 xfire1.2 整合

    但随着技术的发展,现在更多的开发者可能转向使用Spring Boot、Hibernate ORM(取代XFire的现代Web服务框架如Spring Web Services)和更新版本的Struts或替代品如Play Framework。 然而,由于描述中提到“jar自已去...

    dogstarrelay:Scrape dogstarradio.com的播放列表数据

    使用Scala的Framework 2.0 webapp。 它演示了Scala中的内置XML支持,以及Play中的异步结果! (目前已注释掉,因为它似乎无法在Heroku上运行,尽管它在其他情况下也很好用),表单提交,重定向,使用Ajax进行...

    swagger-core,用于生成swagger api规范的示例和服务器集成,该规范允许轻松访问restapi.zip

    2. **服务器端集成**:它能够与多种服务器框架集成,如 Jersey、Spring MVC 和 Play Framework,帮助开发者快速构建符合 Swagger 规范的 REST 服务。 3. **文档生成**:通过解析源代码,Swagger Core 可以自动生成...

    struts各个版本jar包汇总

    - **现代框架对比**:Struts 2与Spring MVC、Play Framework等现代框架相比,可能存在维护成本高、社区活跃度低等问题,开发者需要权衡选择。 总之,了解并掌握Struts的各个版本及其特性,对于理解Web开发的历史...

    struts1.3.rar

    尽管现代开发中已经出现了更新、更灵活的框架,如Spring MVC和Play Framework,但Struts 1.3在它的时代是一个非常重要的里程碑,为许多现有企业应用奠定了基础。理解这些组件的工作原理对于维护和升级旧项目仍然具有...

    shaun-master.zip

    Pac4J 是一个轻量级、可扩展的安全库,适用于多种 web 框架,如 Spring Security 和 Play Framework。JWT(JSON Web Token)则是一种安全地在各方之间传输信息的开放标准,常用于身份验证和授权。 在这个压缩包中,...

    框架笔试-tang.docx

    * Play Framework 分析这些 Web 框架的优缺点包括: * Spring MVC:优点是轻量级、灵活、可扩展性强;缺点是学习曲线陡峭 * Struts 2.0:优点是功能强大、可扩展性强;缺点是配置复杂、学习曲线陡峭 * Hibernate:...

    swagger-core-2.1.13.tar.gz

    5. **集成**: Swagger Core支持多种Web开发框架,如Java的Spring MVC、Play Framework,甚至Node.js和Ruby on Rails。这样,无论你使用哪种技术栈,都可以轻松地将Swagger集成到你的项目中。 6. **测试**: Swagger ...

    struts中ec标签的使用

    但是,随着Struts 2的普及,许多开发者转向了更加现代的Web开发框架,如Spring MVC或Play Framework。尽管如此,对于维护旧的Struts 1.x应用或者对性能有较高要求的大型项目,EC标签仍然是一个非常实用的工具。

    vat-deferral-new-payment-scheme-frontend

    Play Framework支持RESTful架构,使得与后端API的交互更为简单,同时提供了一套强大的模板引擎,用于生成HTML、XML或其他类型的响应。 2. **React或Vue.js**:考虑到前端用户界面的复杂性,项目可能采用了React或...

    wpf嵌WMPlayer加变速.rar

    我们可以使用`playSpeed`属性来改变播放速率,其值可以是1.0(正常速度)到2.0(两倍速)之间的任何浮点数。例如,将播放速度设置为1.5倍速: ```csharp player.playSpeed = "1.5"; ``` 为了确保变速播放的平滑,...

Global site tag (gtag.js) - Google Analytics