Как позвонить в веб-метод, чтобы принять POST - PullRequest
0 голосов
/ 15 апреля 2019

Мне нужно разместить данные в моем бэкэнде через веб-сервис.

Мой веб-метод:

[WebMethod]

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

Из фиддлера, если я вызываю с помощью глагола POST, это дает

Неверный формат запроса

Мои требования

Пожалуйста, дайте мне знать, как это должно быть вызвано через POST.

GET работает нормально.

Ответы [ 2 ]

0 голосов
/ 15 апреля 2019

Украсьте свой класс:

[System.Web.Script.Services.ScriptService]

для разрешения запросов POST к вашему WebMethod, если вы используете AJAX.

A ScriptService позволяет легко вызывать веб-сервис с атрибутом WebService из JavaScript. Применение атрибута ScriptService к WebService заставляет его принимать данные JSON (нотация объекта JavaScript) для входных параметров и возвращать данные JSON. Это полностью исключает необходимость синтаксического анализа XML, как при использовании стандартных веб-служб SOAP (Simple Object Access Protocol), или необходимость создания страниц ASPX для перехвата и анализа / форматирования выходных данных.

0 голосов
/ 15 апреля 2019

Try:

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

From MSDN :

true, если метод вызывается с помощью команды HTTP GET;false, если метод вызывается с помощью команды HTTP POST.По умолчанию установлено значение false.

По умолчанию установлено значение 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...