Hello JAX-RS (XML Response)
JSONオブジェクトを送信し、XMLドキュメントを受け取るケース
POJOをXMLに変換できるように設定する。
HelloResponse.java
package hello;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement(name = "response")
public class HelloResponse {
String message;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
XMLを返すように設定。
package hello;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
@Path("/helloxml")
@Produces("application/xml")
@Consumes(MediaType.APPLICATION_JSON)
public class HelloServletXml {
@POST
public HelloResponse getMessage(HelloRequest request) {
System.err.println(this.getClass().getName() + ":"
+ request.getMessage());
try {
HelloResponse response = new HelloResponse();
response.setMessage("こんにちは");
return response;
} catch (Exception e) {
// Utils.handleException(e);
e.printStackTrace();
}
return null;
}
}
XMLを受け取れるようにクライアントを設定
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Hello Ajax (JSON)</title>
<script src="http://code.jquery.com/jquery-2.1.4.min.js"></script>
<script type="text/javascript">
function sendText() {
var params = {
message : "Hello"
// "key1" : "value1",
// "key2" : "value2"
};
$.ajax({
type : "post",
url : "/hellojaxrs/rest/helloxml",
data : JSON.stringify(params),
contentType : 'application/json',
dataType : "xml",
success : function(result, dataType) {
console.log("OK1");
console.log($(result).find("message").text());
},
complete : function(json_data) {
console.log("OK2");
}
});
}
</script>
</head>
<body>
<div>
<input type="button" name="btnSend" style="font-size: 16px;"
value="送信" onclick="sendText()">
</div>
</body>
</html>