jqueryを使用するWebインターフェイスを備えたjersey(java)による単純なレストサーバーを取得しました。GET および POST モード用の REST サービスがあります。POST 呼び出しは機能しません。入力データ側に json オブジェクトがあり、json データを返します。
例外メッセージ:
A message body reader for Java class ....RESTTaskDataInput, and Java type class ....RESTTaskDataInput, and MIME media type application/x-www-form-urlencoded; charset=UTF-8 was not found.
The registered message body readers compatible with the MIME media type are:
application/x-www-form-urlencoded; charset=UTF-8 ->
com.sun.jersey.core.impl.provider.entity.FormProvider...
ポスト コールの Jquery コード (クリック ボタンでコールを実行):
$("#task-launcher-post").click(function()
{
$("div#result").text("");
$.ajax({
type: "POST",
url: "resources/foo", <= This is OK, the rest interface is under that
data: {
code: "1234",
email: "my@email.com"
},
dataType: "json",
success: function(result)
{
$("div#result").append('...');
},
error: function(xml,result)
{
$("div#result").append('...');
}
});
});
Java REST サービス コード
@Path("/foo")
public class RESTSERVICECrawler
{
...
@POST
@Consumes("application/json")
@Produces("application/json")
public RESTLaunchResult launch(RESTTaskDataInput input)
{
RESTLaunchResult result = new RESTLaunchResult();
...
return result;
}
}
Java RESTTaskDataInput コード (入力側で使用されるデータ)
@XmlRootElement
public class RESTTaskDataInput
{
public String code;
public String email;
}
GET 呼び出しは URL パラメーターを使用して機能しますが、POST は入力に json を使用しません。理由はわかりませんが、ajax の jquery ドキュメントを読みました。残りのサーバーは json 入力データを理解できないと思います。