首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >不允许使用Post方法

不允许使用Post方法
EN

Stack Overflow用户
提问于 2015-08-31 10:54:11
回答 1查看 1.1K关注 0票数 2

我试过这个例子:bg2000/developing-wcf-restful-services-with-get-and-post-methods/

GET方法工作得很好,但POST方法不行。调试时,strReturnValue变量始终为空。当我继续时,状态是: 405方法不允许。我做错了什么?

在C#中,我不得不将方法从POST更改为选项。

我使用的是Restangular (角js)。以下是前端功能:

代码语言:javascript
代码运行次数:0
运行
复制
        var message = {
            Name: new_player.name,
            Created: (new Date()).toJSON(),
            Affilation: new_player.human,
            auth: new_player.auth
        }
        return Restangular.one('').post('CreatePlayer', message).then(function(){
            console.log("Object saved OK");
          }, function() {
            console.log("There was an error saving");               
        });

编辑

代码语言:javascript
代码运行次数:0
运行
复制
[System.ServiceModel.OperationContract]
    [System.ServiceModel.Web.WebInvoke(UriTemplate = "CreatePlayer", Method = "OPTIONS", BodyStyle = WebMessageBodyStyle.Bare, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
    string CreatePlayer(System.IO.Stream data);

    public string CreatePlayer(System.IO.Stream data) {

        //convert stream data to StreamReader
        System.IO.StreamReader reader = new System.IO.StreamReader(data);

        //read StreamReader data as string
        string XML_string = reader.ReadToEnd();
        string result = XML_string;

        //return the XMLString data
        return result;
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-31 16:50:37

必须将我的前端post调用的标题更改为:‘application/x form-urlencoded’(默认的Internet媒体类型)。

代码语言:javascript
代码运行次数:0
运行
复制
        return Restangular.one('').customPOST({
            Name: new_player.name,
            Created: new Date(),
            Affilation: new_player.human,
            auth: new_player.fed
            }, 'CreatePlayer', {},
            {'Content-Type': 'application/x-www-form-urlencoded'
        })

或者,您可以使用角$http服务:

代码语言:javascript
代码运行次数:0
运行
复制
$http({
    url: 'http://localhost:31736/BusinessService.svc/CreatePlayer',
    method: 'POST', 
    data: "test",
    headers: {"Content-Type": "application/x-www-form-urlencoded"}
}); 

就是这样!,然后我可以序列化产生的字符串,然后转到业务逻辑。

代码语言:javascript
代码运行次数:0
运行
复制
    public string CreatePlayer(System.IO.Stream data) {

        //convert stream data to StreamReader
        System.IO.StreamReader reader = new System.IO.StreamReader(data);

        //read StreamReader data as string
        string XML_string = reader.ReadToEnd();

        System.Web.Script.Serialization.JavaScriptSerializer json_serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
        BusinessObjects.Player Player = json_serializer.Deserialize<BusinessObjects.Player>(XML_string);

        return BL_CreatePlayer.CreatePlayer(Player);
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32309605

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档