我遇到了一个奇怪的问题,我从AngularJS代码中获取GET WCF Restful API工作正常,但POST请求无效。以下是我的WCF邮政服务代码:
接口代码和实现:
[OperationContract]
[WebInvoke(Method = "POST",
ResponseFormat = WebMessageFormat.Json,
RequestFormat = WebMessageFormat.Json,
UriTemplate = "TestPost")]
string TestPost(string sValue);
public string TestPost(string sValue)
{
return sValue;
}
Angular JS客户端代码:
$scope.testPostAPI = function ()
{
var data = $.param(
{
FName: "John",
LName: "Smith"
});
var config =
{
headers:
{
'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8;'
}
}
$http.post('http://localhost:5000/RestServiceImpl.svc/TestPost', data, config)
.success(
function (data, status, headers, config)
{
$scope.DOCUMENTSAVERESPONSE = data;
$scope.ResponseDetails= 'Response from post service'
})
.error(function (data, status, header, config)
{
$scope.ResponseDetails = "Data: " + data +
"<hr />status: " + status +
"<hr />headers: " + header +
"<hr />config: " + config;
});
}
答案 0 :(得分:0)
您正在将复杂类型从客户端传递到期望简单类型的节点。你有两个选择。
1将“John Smith”作为简单类型字符串发送。
2在api方法上更改形式参数以获取Person,例如:
public class Person
{
public string FName{get;set;}
public string LName{get;set;}
}
public Person TestPost(Person sValue)
{
...
}
答案 1 :(得分:0)
使用内容类型:application / json然后传递数据值 使用JSON.stringify(data)
$ http.post(&#39; http://localhost:5000/RestServiceImpl.svc/TestPost&#39;,JSON.stringify(data),config)
。成功(
功能(数据,状态,标题,配置)
{
$ scope.DOCUMENTSAVERESPONSE =数据;
$ scope.ResponseDetails =&#39;来自邮政服务的响应&#39;
})
.error(函数(数据,状态,标题,配置)
{
$ scope.ResponseDetails =&#34;数据:&#34; +数据+
&#34;