私のchrome-rest-clientで完全に機能する次のサーバー側Javaコードがあります。
@POST
@Consumes(MediaType.APPLICATION_JSON)
public long postVehicle(Vehicle vehicle) {
vehicleDao.persist(vehicle);
return vehicle.getId();
}
このインターフェイスをテストするために、rest-client 経由で JSON を送信すると、非常にうまく処理されます。
しかし今、私は自分のサーバーにjQuery-ajaxリクエストを含むWebページを介して次のjsonを送信したいと考えています:
var data = {
"color": "black",
"emissionStandards": "EURO 5",
"emptyWeight": "1500",
"mileage": "60000",
"topSpeed": "260"
}
var options = {
url: "resources/vehicle",
data: data,
contentType: "application/json",
dataType: "json",
processData: false,
type : "POST",
success: callback,
async: true
};
$.ajax(options);
デバッガーに表示されるリクエストヘッダーは私には良さそうです。
しかし、サーバーから次の 2 つのエラーが表示されます。
org.glassfish.jersey.server.ContainerException: org.codehaus.jackson.map.JsonMappingException: Can not deserialize instance of de.ibs.trail.entity.Vehicle out of START_ARRAY token
org.codehaus.jackson.map.JsonMappingException: Can not deserialize instance of de.ibs.trail.entity.Vehicle out of START_ARRAY token
編集1::
jQuery-Rest-Client で試してみましたが、うまくいきませんでした
md.rest = new $.RestClient('/trail/resources/', {ajax: {processData: false, DataType: 'json', contentType: 'application/json'}});
md.rest.add("vehicle");
var data = {/* same data as above */};
md.rest.vehicle.create(data); //same data as my first try
同じエラー
編集2::
これが生のリクエストヘッダーです
POST /resources/vehicle/ HTTP/1.1
Host: localhost:8080
Connection: keep-alive
Content-Length: 329
Accept: application/json, text/javascript, */*; q=0.01
Origin: http://localhost:8080
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.66 Safari/537.36
Content-Type: application/json
DNT: 1
Referer: http://localhost:8080/
Accept-Encoding: gzip,deflate,sdch
Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4
Cookie: JSESSIONID=f5a663a3743657defb5c13aef866; treeForm_tree-hi=treeForm:tree:applicationServer
そしてペイロード:
'{"color": "black","emissionStandards": "EURO 5","emptyWeight": "1500","mileage": "60000","topSpeed": "260"}'