我正在使用angularjs发布创建的webapi数据。它在我的本地系统上工作,但是当我上传到服务器上时它无法正常工作并返回错误,不支持的媒体类型。请帮我解决这个问题。
<script>
var app = angular.module('MyApp', []);
app.controller("QueryControllerController", function ($scope, $http) {
$scope.submit = function () {
if ($scope.QueryDescription) {
var product = {
"QueryDescription": $scope.QueryDescription,
"CategoryID": $scope.CategoryID
}
$http.post('/api/querycontroller', JSON.stringify(product)).
success(function (data, status, headers, config) {
alert('Added Successfully' + headers);
$('#formusers')[0].reset();
}).
error(function (data, status, headers, config) {
alert(status + ", " + data + ", " + headers + "," + config);
});
}
};
}
);
我的api控制器代码是:
[ResponseType(typeof(Query))]
[HttpPost]
public HttpResponseMessage Post([FromBody]Query Services)
{
Services.CommunityID = UserStatus.GetUserID(User.Identity.Name);
Services = repository.Add(Services);
var response = Request.CreateResponse<Query>(HttpStatusCode.Created, Services);
string uri = Url.Route(null, new { id = Services.QueryID });
response.Headers.Location = new Uri(Request.RequestUri, uri);
return response;
}
当我尝试发布时,我得到不支持的媒体类型响应。:
"Message": "The request entity's media type 'text/plain' is not supported for this resource."
答案 0 :(得分:1)
删除[ResponseType(typeof(Query))]并使用ViewModel类作为参数
[HttpPost]
public HttpResponseMessage Post([FromBody]ProductViewModel product)
{
也...
尝试https://stackoverflow.com/users/1267724/john建议的方法(在agunlar控制器中)作为这篇文章的答案: change Content-type to "application/json" POST method, RESTful API
在Angular中发布JSON对象非常简单。您需要做的就是:
创建Javascript对象
我将使用您代码中的确切属性。
var postObject = new Object();
postObject.userId = "testAgent2";
postObject.token = "testAgent2";
postObject.terminalInfo = "test2";
postObject.forceLogin = "false";
Post the object to the API
要将对象发布到API,您只需要一个简单的$ http.post 功能。见下文:
$http.post("/path/to/api/", postObject).success(function(data){
//Callback function here.
//"data" is the response from the server.
});
由于JSON是发布到API的默认方法,因此没有必要 重置它。有关详细信息,请参阅$ http快捷方式中的此链接。
关于您的代码,请尝试更改您的保存方法 包括这个简单的帖子方法。