Knockout.js 获取HTTP状态415向RESTful服务发送post请求
我正在通过Knockout.js 获取HTTP状态415向RESTful服务发送post请求,knockout.js,jersey,http-post,amplifyjs,http-status-code-415,Knockout.js,Jersey,Http Post,Amplifyjs,Http Status Code 415,我正在通过ko.toJSON方法发送一个“POST”请求,其中包含一个JSON对象,该对象从我的observable转换为JSON。我用电子邮件发送 这是我的放大设置: amplify.request.define('addContract', 'ajax', { url: '/api/contractmanager/contracts/create', dataType: 'json', type
ko.toJSON
方法发送一个“POST”请求,其中包含一个JSON对象,该对象从我的observable转换为JSON。我用电子邮件发送
这是我的放大设置:
amplify.request.define('addContract', 'ajax', {
url: '/api/contractmanager/contracts/create',
dataType: 'json',
type: 'POST'
});
这是我的dataservice
中添加数据的方法:
addContract = function (callbacks, data) {
return amplify.request({
resourceId: 'addContract',
data: data,
success: callbacks.success,
error: callbacks.error
});
};
以下是我实际发送请求的方式:
contracts.addData = function (contractModel, callbacks) {
var contractModelJson = ko.toJSON(contractModel);
return $.Deferred(function (def) {
dataservice.contract.addContract({
success: function (dto) {
if (!dto) {
logger.error('Error saving!');
if (callbacks && callbacks.error) { callbacks.error(); }
def.reject();
return;
}
},
error: function (response) {
logger.error('Error saving!');
if (callbacks && callbacks.error) { callbacks.error(); }
def.reject(response);
return;
}
}, contractModelJson);
}).promise();
};
对于后端,我将使用RESTfulWeb服务
问题是,只要我发送请求,我就会得到一个“HTTP状态415-不支持的媒体类型”,我的服务器GlassFish说:“服务器拒绝了这个请求,因为请求实体的格式不受请求方法的请求资源支持(不支持的媒体类型)。”
我需要设置任何特定的设置才能使其工作吗?我遗漏了什么吗?您需要确保发送的内容类型与Jersey资源上的
@Consumes
注释的内容类型匹配。在您的特定情况下,Jersey资源需要如下所示:
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.core.MediaType;
...
@PATH("create")
@POST
@Consumes(MediaType.APPLICATION_JSON)
public Item create(final Item item) {
// Create here
}
您需要确保使用内容类型“application/json”发送数据。您需要确保发送的内容类型与Jersey资源上的
@Consumes
注释的内容类型匹配。在您的特定情况下,Jersey资源需要如下所示:
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.core.MediaType;
...
@PATH("create")
@POST
@Consumes(MediaType.APPLICATION_JSON)
public Item create(final Item item) {
// Create here
}
您需要确保使用内容类型“application/json”发送数据。如果将数据类型设置为
application/json
,会发生什么?如果将数据类型设置为application/json
,会发生什么?