如何调用网络方法来接受POST

时间:2019-04-15 10:42:30

标签: c# web-services post

我需要通过Web服务将数据发布到后端。

我的网络方法是;

[WebMethod]

    public string InsertData(string dData)
    {
        Log.Info(deviceData);
        ....
        string status= serv.InsertData(dData);
        return status;
    }

如果我使用POST动词打电话给小提琴手,它会给出

  

请求格式无效

我的要求

请让我知道如何通过POST调用它。

GET运行正常。

2 个答案:

答案 0 :(得分:0)

尝试:

[WebMethod(EnableSession = true)]
 [ScriptMethod(UseHttpGet = false, ResponseFormat = ResponseFormat.Json)]
 public static string Example(string id)
 {
    return "it worked";
 }

来自MSDN

  如果使用HTTP GET命令调用该方法,则为true;否则为true。如果为假   使用HTTP POST命令调用该方法。默认是   错误。

默认为false,因此您应该已经在使用POST。

关于调用它, 从jquery尝试:

<script>
        $.ajax({
            type: "POST",
            url: "WebForm1.aspx/Example",
            data: JSON.stringify({
                'theIdToPass'
            }),
            contentType: "application/json; charset=utf-8",
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                alert("Request: " + XMLHttpRequest.toString() + "\n\nStatus: " + textStatus + "\n\nError: " + errorThrown);
            },
            complete: function (jqXHR, status) {
                alert("complete: " + status + "\n\nResponse: " + jqXHR.responseText);
            }
        });
    </script>

答案 1 :(得分:0)

通过以下方式装饰您的课程:

[System.Web.Script.Services.ScriptService]

允许在使用AJAX的情况下对您的WebMethod进行POST请求。

ScriptService使从JavaScript调用带有WebService属性修饰的Web服务变得容易。将ScriptService属性应用于WebService会使其接受输入参数的JSON(JavaScript对象表示法)数据并返回JSON数据。这完全消除了使用标准SOAP(简单对象访问协议)Web服务时必须解析XML的需要,也不再需要创建ASPX页面来劫持和解析/格式化输出。