Jersey RESTを使用して構築されたWebサービスにJSONをポストする際に問題があります。データは決してサーバーに到着しないようです。サーバーへのJSON POSTが到着しない
タスク全体の流れは次のように多少です:
JavascriptのPOST JSON - > Webサーバ - > WebサーバJSONをPOSTすることになっているのJavascriptれるJSONを取得し、ここで
を印刷パス/posttest
とサーバへのデータ、:
<script type="text/javascript">
$(function() {
var name = "Tony";
$.post(
'/posttest',
function (data) {
alert("sune " + data.name);
});
})
</script>
私はすべてのこれらのクラスを実行しているWebサーバ(グリズリー)を持っている:
このクラスは、JSONデータを消費POSTリクエストを処理するために、JAX-RSのAPIを使用しています。
@XmlRootElement
public class StatusBean {
private String name;
public StatusBean() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name= name;
}
}
:ここ
@Path("/posttest")
public class PostTest {
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response doPost(StatusBean b) {
System.out.println("---> " + b.getName());
StatusBean statusBean = new StatusBean();
return Response.status(Response.Status.ACCEPTED).entity(statusBean).build();
}
は、データをにしてから、シリアル化されることをBeanの定義でありますここにコンソールのデータを出力するテストクライアントクラスがあります。
ClientConfig cc = new DefaultClientConfig();
Client c = Client.create(cc);
WebResource r = c.resource("http://localhost:9998/posttest");
StatusBean post = r.type(MediaType.APPLICATION_JSON_TYPE).post(StatusBean.class, new StatusBean());
System.out.println("--> " + post.getName());
これは、コンパイルコードではありません。手作業で質問にすべて貼り付けたのですか?特に、Webサービス実装クラスでは、メソッドを誤って呼び出して、存在しないフィールドを参照しています。正しいコードを投稿してください。 – Perception
編集済み!まだ不明な点があれば教えてください。私は自分のプロジェクトからコードの必要な部分を貼り付けました。 – nihulus