Webサービス要求に反応する単純なJavaアプリケーションがあります。
ユーザーがボタンを押すと、メッセージがJavaアプリケーションに送信されます。
メッセージが「ping」の場合、アプリケーションは「pong」で応答します。それ以外の場合は、「不明なメッセージ」です。
Javaアプリケーションのコード:
@Path("/ping-pong")
public class PingPongService {
@POST
@Produces("text/plain")
public String test(@FormParam("message") final String aMessage) {
System.out.println("message from client: " + aMessage);
if ("ping".equalsIgnoreCase(aMessage)) {
System.out.println("ping.equalsIgnoreCase(aMessage)");
return "pong";
} else {
System.out.println("Unknown message");
return "unknown message " + aMessage;
}
}
}
WARファイル内には、次のHTMLコードがあります。これは機能します(ボタンの1つを押すと、Javaアプリケーションから応答が返され、メッセージボックスに表示されます)。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>JavaScript Ping-Pong Client</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript">
//This function send post request to the server using jQuery
function testWithJQuery(message){
$.post('http://localhost:8345/rest/ping-pong', { message: message }, function(data) {
alert(data);
});
}
//This function send post request to the server using a low-level XmlHttpRequest instead of the jQuery
//(no dependencies on external libraries)
function test(message){
var http = new XMLHttpRequest();
var url = "http://localhost:8345/rest/ping-pong";
var params = "message=" + message;
http.open("POST", url, true);
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.setRequestHeader("Content-length", params.length);
http.setRequestHeader("Connection", "close");
http.onreadystatechange = function() {
if(http.readyState == 4 && http.status == 200) {
alert(http.responseText);
}
};
http.send(params);
}
</script>
</head>
<body>
<button onclick="test('ping')">Test</button>
<button onclick="testWithJQuery('ping')">Test using jQuery</button>
</body>
</html>
Djangoアプリケーションでもまったく同じことをしたいと思います(ユーザーがボタンを押すと、メッセージがJavaアプリケーションに送信され、その応答がアラートメッセージウィンドウに表示されます)。
Djangoは次のHTMLコードを生成します:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="en">
<head>
<title></title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript">
//This function send post request to the server using jQuery
function testWithJQuery(message){
$.post('http://localhost:8345/rest/ping-pong', { message: message }, function(data) {
alert(data);
});
}
//This function send post request to the server using a low-level XmlHttpRequest instead of the jQuery
//(no dependencies on external libraries)
function test(message){
var http = new XMLHttpRequest();
var url = "http://localhost:8345/rest/ping-pong";
var params = "message=" + message;
http.open("POST", url, true);
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.setRequestHeader("Content-length", params.length);
http.setRequestHeader("Connection", "close");
http.onreadystatechange = function() {
if(http.readyState == 4 && http.status == 200) {
alert(http.responseText);
}
};
http.send(params);
}
</script>
</head>
<body>
<button onclick="test('ping')">Test</button>
</body>
</html>
Djangoで生成されたコードで[テスト]ボタンを押すと、Javaアプリケーションはメッセージを受信します(これはコンソール出力に表示されます)が、HTMLコードを使用してもJavaアプリケーションの応答がDjangoWebサイトに表示されませんWARファイルのものと同じです。
これを修正するにはどうすればよいですか?つまり、Javaアプリケーションの応答がDjangoに表示されていることを確認してください。
UPD:Chromeの[ネットワーク]ペインに表示されるエラーの詳細は次のとおりです。