从Angular JS调用WCF POST Restful服务时出错

时间:2018-01-03 14:23:49

标签: javascript c# angularjs rest wcf

我遇到了一个奇怪的问题,我从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;
        });
}

2 个答案:

答案 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;


状态:&#34; +状态+                     &#34;
标题:&#34; +标题+                     &#34;
config:&#34; + config;             });