rrotstein Ответов: 1

Данные веб-API не получает связали


У меня есть проект WebAPI, который был сгенерирован мастером Visual Studio 2015. В нем я добавил контроллер, который содержит обработчик GET:
public Task<string> Get (int id)
{
    using (var wb = new WebClient())
    {
        var data = new NameValueCollection();
        data["username"] = "myUser";
        data["password"] = "myPassword";

        var response = wb.UploadValues(<project URL, ends with a value for the id  
            parm>, "POST", data);
    }

    return null;
}

And I have the following method:

[HttpPost]
public NameValueCollection Post(int id, [FromBody] NameValueCollection data)
{
    return data;
}

Я обнаружил, что, хотя я намеренно жестко закодировал данные в обработчике GET, когда вызывается метод POST, параметр data всегда имеет a .Счет 0. По возвращении в гетто он уже есть .Сосчитайте до 2, точно так, как все началось. Я перепробовал дюжину различных методов вызова сообщения, взятых из различных статей в интернете. В каждом случае поведение одно и то же: метод POST не получает никаких данных. Параметр id всегда имеет правильное значение, передаваемое в метод GET.

Кто-нибудь имеет представление о том, что может пойти не так?

Что я уже пробовал:

Я испробовал дюжину различных методов из статей, найденных в интернете.

1 Ответов

Рейтинг:
1

Dave Kreskowiak

Во-первых, вам действительно нужно изучить базовый C#, прежде чем вы попробуете это сделать. Почему?

Потому что ваш метод Get жестко закодирован, чтобы вообще ничего не возвращать. Видеть это return null в нижней части метода. Да.

Далее, ваш метод Get говорит, что он возвращает a Task<string></string>, но он не делает ничего похожего на настройку и возврат задачи, которая возвращает строку.

Я хотел бы сказать вам, как "исправить" это, но я понятия не имею, что вы пытаетесь сделать. У вас есть метод Get, который ничего не получает и не возвращает. На самом деле он помещает значения в какой-то другой веб-URL, что бы это ни было. Ваш код в лучшем случае шизофреничен.


rrotstein

Этот код предназначен для первой попытки размещения данных. Я понимаю, что это не имеет большого смысла в качестве рабочего примера; мое намерение состояло в том, чтобы просто вызвать метод POST, а затем создать код.

Я попробовал несколько подходов, взятых из следующих статей:

http://stackoverflow.com/questions/4015324/http-request-with-post
http://stackoverflow.com/questions/21051743/submit-post-request-from-codebehind-in-asp-net
http://stackoverflow.com/questions/5401501/how-to-post-data-to-specific-url-using-webclient-in-c-sharp

Ни один из них не сработал.

Возможно, вы могли бы просто сказать мне, каков допустимый способ вызова метода POST непосредственно из браузера?

Dave Kreskowiak

Есть миллионы примеров этого в интернете. Все, что вам нужно сделать, это поискать в Google "javascript post request".

Конечно, у вас должен быть правильный серверный код, чтобы почта могла что-то делать.

Вот, попробуй http://stackoverflow.com/questions/26212987/mvc-how-to-call-controller-post-method