powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Вызов веб-метода с параметром List<String> в asp.net mvc application
3 сообщений из 3, страница 1 из 1
Вызов веб-метода с параметром List<String> в asp.net mvc application
    #39126039
Vadim Romanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!

Возникла необходимость вызвать веб-метод, у которого один из параметров - List<String>. Для тестов создал два проекта - CallerPrj и CalledPrj. Проекты основаны на шаблоне ASP.NET MVC4 Wep Project. Visual Studio 2012.
В дебаггере вижу, что в CalledPrj приходит пустой лист. Подскажите пожалуйста - что я делаю не так?
Ссылка на оба прожекта: здесь.
Для запуска рабочего примера. Сначала запускаем проект CalledPrj, соответственно меняем URL в проекте CallerPrj, запускаем и переходим по условному адресу
http://localhost:24143/api/Values?MyTest

Если вкратце, то содержимое главного вызываемого метода проекта CalledPrj:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
        public ResponceObject MyTest(List<String> values)
        {
            if (values == null)
                return null;
            String ret = "";
            foreach (String value in values)
                ret += value + " DELIMITER ";

            return new ResponceObject("No Error", ret);
        }



и код вызывающего метода проекта CallerPrj:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
        [HttpGet]
        public ResponceObject MyTest()
        {
            
            ResponceObject ret = new ResponceObject();
            try
            {
                using (var wb = new System.Net.WebClient())
                {
                    String URL = "http://localhost:24130/api/Values";
                    List<String> values = new List<string>();
                    values.Add("code1");
                    values.Add("code2");


                    WebClient wc = new WebClient();

                    wc.QueryString.Add("values", Newtonsoft.Json.JsonConvert.SerializeObject(values));

                    var data = wc.UploadValues(URL, "POST", wc.QueryString);

                    // data here is optional, in case we recieve any string data back from the POST request.
                    var responseString = UnicodeEncoding.UTF8.GetString(data);

                    
                }
            }
            catch (Exception e)
            {
                ret.Error = e.Message;
                
            }
            return ret;
        }
...
Рейтинг: 0 / 0
Вызов веб-метода с параметром List<String> в asp.net mvc application
    #39126112
Vadim Romanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Корень решения проблемы, по всей видимости, сводится к тому, что для передачи List of Strings нужно просто добавить столько параметров в запрос с одинаковым именем и разными значениями, сколько элементов в передаваемом List
...
Рейтинг: 0 / 0
Вызов веб-метода с параметром List<String> в asp.net mvc application
    #39126163
Vadim Romanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема решена благодаря отдельным форумчанам.

В рабочем состоянии два проекта выглядят следующим образом:
Обновленные исходники двух проектов

Вдруг кому-то придется решать аналогичную задачу.

ПС: вдруг ссылка протухнет - вот содержимое двух самых важных классов из обоих проектов:
CallerPrj
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
namespace CallerPrj.Controllers
{
    public class ValuesController : ApiController
    {

        [HttpGet]
        public ResponceObject MyTest()
        {
            ResponceObject ret = new ResponceObject();
            try
            {
                var client = new HttpClient();
                var values = new List<string> { "code1", "code2" };
                var url = "http://localhost:24130/api/Values?MyTest";

                HttpResponseMessage response = client.PostAsJsonAsync(url, values).Result;
                var content = response.Content.ReadAsAsync<ResponceObject>().Result;

                ret.Value = content.Value;
                ret.Error = content.Error;
            }
            catch (Exception e)
            {
                ret.Error = e.Message;
            }
            return ret;
        }
    }
}



CalledPrj
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
namespace CalledPrj.Controllers
{
    public class ValuesController : ApiController
    {
        [HttpPost]
        public ResponceObject MyTest(List<String> values)
        {
            if (values == null)
                return null;
            String ret = "";
            foreach (String value in values)
                ret += value + " DELIMITER ";

            return new ResponceObject("No Error", ret);
        }

    }
}
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Вызов веб-метода с параметром List<String> в asp.net mvc application
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]