powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Вызов веб-метода через POST в C#
25 сообщений из 52, страница 2 из 3
Вызов веб-метода через POST в C#
    #39126072
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
        
[System.Web.Http.HttpGet]
public ResponceObject MyTest(IEnumerable<String> values)



ТС,
вас выделенное не смущает?
...
Рейтинг: 0 / 0
Вызов веб-метода через POST в C#
    #39126074
Vadim Romanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Axeleronblestпропущено...


Именно!
Вот зачем Вы человека в заблуждение вводите? Там же видно, что в коде полный бред, а вы Боржоми от цирроза пытаетесь спасти...
Если не сложно - укажите пожалуйста, в чем бред
...
Рейтинг: 0 / 0
Вызов веб-метода через POST в C#
    #39126078
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vadim Romanenko,
Что нажать в http://localhost:24143, чтобы вызвать сервис?
...
Рейтинг: 0 / 0
Вызов веб-метода через POST в C#
    #39126080
blest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Axeleronblestпропущено...


Именно!
Вот зачем Вы человека в заблуждение вводите? Там же видно, что в коде полный бред, а вы Боржоми от цирроза пытаетесь спасти...

Я не пытаюсь спасти код ТС , а пишу сюда код правильный с моей точки зрения
...
Рейтинг: 0 / 0
Вызов веб-метода через POST в C#
    #39126082
Vadim Romanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_One
Код: c#
1.
2.
3.
        
[System.Web.Http.HttpGet]
public ResponceObject MyTest(IEnumerable<String> values)



ТС,
вас выделенное не смущает?
Смущало. Поменял на HttpPost - с одной стороны, при публикации все равно совало Get, с другой - не помогло.

Посмотрите пожалуйста лучше тестовые проекты. Там этой директивы нет вообще
https://www.dropbox.com/s/0ar6ys9jed412iy/Tests.zip?dl=0
...
Рейтинг: 0 / 0
Вызов веб-метода через POST в C#
    #39126085
Vadim Romanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AxeleronVadim Romanenko,
Что нажать в http://localhost:24143, чтобы вызвать сервис?
Если у Вас при запуске на порт 24143 замапился проект CallerPrj, то нажать нужно
http://localhost:24143/api/Values?MyTest
...
Рейтинг: 0 / 0
Вызов веб-метода через POST в C#
    #39126103
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vadim Romanenko,
Какую версию фреймворка используете?
...
Рейтинг: 0 / 0
Вызов веб-метода через POST в C#
    #39126104
Vadim Romanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Axeleron,

.NET FrameWork 4.0
Проект ASP.NET MVC 4, Web Project
...
Рейтинг: 0 / 0
Вызов веб-метода через POST в C#
    #39126113
blest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vadim RomanenkoAxeleron,

.NET FrameWork 4.0
Проект ASP.NET MVC 4, Web Project

Вы же наверное понимаете, что у серверная часть у вас это web-api ASP.NET и Вы наверняка знаете, что это такое?
...
Рейтинг: 0 / 0
Вызов веб-метода через POST в C#
    #39126114
Vadim Romanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blestVadim RomanenkoAxeleron,

.NET FrameWork 4.0
Проект ASP.NET MVC 4, Web Project

Вы же наверное понимаете, что у серверная часть у вас это web-api ASP.NET и Вы наверняка знаете, что это такое?

Не скажу, что я съел собаку в этом вопросе, но примерно в курсе.
А в чем соль Вашего вопроса?
...
Рейтинг: 0 / 0
Вызов веб-метода через POST в C#
    #39126115
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CallerPrj:
Поменяйте базовый класс с ApiController на Controller.
Код вызова:
Код: c#
1.
2.
3.
4.
5.
6.
            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;



CalledPr:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
        [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
Вызов веб-метода через POST в C#
    #39126124
blest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Axeleron,

и на этом тему предлагаю закрывать, пока ТС весь дом не спалил.

Vadim Romanenko, при всем уважении, когда разводите костер надо иметь представление, как обращаться огнем.
...
Рейтинг: 0 / 0
Вызов веб-метода через POST в C#
    #39126138
Vadim Romanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Axeleron,

прошу прощения за вероятно дурацкий вопрос, но как мне после замены ApiController на Controller - выполнить вызов метода MyTest в CallerPrj в браузере? Тот самый метод, в котором
Код: c#
1.
2.
3.
4.
5.
6.
                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;
...
Рейтинг: 0 / 0
Вызов веб-метода через POST в C#
    #39126143
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vadim Romanenkoпрошу прощения за вероятно дурацкий вопрос, но как мне после замены ApiController на Controller - выполнить вызов метода MyTest в CallerPrj в браузере?
А зачем Вам наследоваться от ApiController в приложении, которое вызывает сервис Web API?
...
Рейтинг: 0 / 0
Вызов веб-метода через POST в C#
    #39126147
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vadim Romanenko,
Очевидно, метод вызова в проекте CallerPrj будет выглядеть примерно так:
Код: c#
1.
2.
3.
4.
5.
        [HttpGet]
        public ActionResult MyTest()
        {
             .....             
        }
...
Рейтинг: 0 / 0
Вызов веб-метода через POST в C#
    #39126148
Vadim Romanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AxeleronVadim Romanenkoпрошу прощения за вероятно дурацкий вопрос, но как мне после замены ApiController на Controller - выполнить вызов метода MyTest в CallerPrj в браузере?
А зачем Вам наследоваться от ApiController в приложении, которое вызывает сервис Web API?

Потому что оно само является Web API. И в оригинале, и в тесте
Тот кусок, который я попытался вытянуть в тестовые проекты - в жизни отвечает за аггрегацию данных из разных источников.
...
Рейтинг: 0 / 0
Вызов веб-метода через POST в C#
    #39126151
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vadim RomanenkoПотому что оно само является Web API. И в оригинале, и в тесте
По виду оба Ваших приложения похожи больше на Web апликации. Мой хрустальный шар не показал, что CallerPrj является Web API приложением :)
Но если оба являются Web API, то, разумеется, обоим надо наследоваться от ApiController.
...
Рейтинг: 0 / 0
Вызов веб-метода через POST в C#
    #39126156
blest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vadim Romanenko,

клиентскую часть оставляйте как есть.

Вы серверную часть можете менять CalledPrj? Например наследоваться в нем от Controller
...
Рейтинг: 0 / 0
Вызов веб-метода через POST в C#
    #39126161
Vadim Romanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Axeleron,

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

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

Если не сложно - подскажите, как нужно расширить вызов
Код: c#
1.
HttpResponseMessage response = client.PostAsJsonAsync(url, values).Result;


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

Так же интересно узнать у blest - откуда Вы узнали что массив можно передать, создав набор параметров с именем массива и перечисленными значениями?

ПС: вдруг ссылка протухнет - вот содержимое двух самых важных классов из обоих проектов:
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
Вызов веб-метода через POST в C#
    #39126166
Vadim Romanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blestVadim Romanenko,

клиентскую часть оставляйте как есть.

Вы серверную часть можете менять CalledPrj? Например наследоваться в нем от Controller

Нет, серверную часть я менять не могу. Я пишу ту часть, которая в тестовом примере CallerPrj. Сама является серверной частью в моем прожекте. Отвечает за сборку и аггрегацию одинаковых по сути данных от разных компаний.
Благодаря уточнениям Axeleron - тестовый прожект заработал.
...
Рейтинг: 0 / 0
Вызов веб-метода через POST в C#
    #39126176
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vadim RomanenkoЕсли не сложно - подскажите, как нужно расширить вызов
Код: c#
1.
HttpResponseMessage response = client.PostAsJsonAsync(url, values).Result;



чтоб он принимал не один параметр - массив значений, а несколько параметров?
Путем создания доменного класса:
Код: c#
1.
2.
3.
4.
5.
6.
    public class PowerfulDomain
    {
        public List<String> Values { get; set; }
        public DateTime Date { get; set; }
        public string FullName { get; set; }
    }



Caller:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
            var client = new HttpClient();
            var powerfulDomain = new PowerfulDomain
                {
                    Values = new List<string> { "code1", "code2" },
                    Date = DateTime.Now.AddYears(10),
                    FullName = "Hello Wolrd"
                };
            var url = "http://localhost:24130/api/Values?MyTest";

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



Called:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
        [HttpPost]
        public ResponceObject MyTest(PowerfulDomain powerDomain)
        {
            if (powerDomain.Values == null)
            {
                return null;
            }

            var ret = powerDomain.Values.Aggregate(string.Empty, (current, value) => current + (value + " DELIMITER "));
            return new ResponceObject("No Error", ret);
        }
...
Рейтинг: 0 / 0
Вызов веб-метода через POST в C#
    #39126187
Vadim Romanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Axeleron,

не-не-не, как вызвать так, чтоб был обычный перечень параметров, без доменного класса, и в том числе List?
Т.е. на стороне Called - вот такой метод, например
Код: c#
1.
public JsonResult GetValues(String companyId, Long userId, List<string> codes)



Как нужно модифицировать вызов на стороне Caller?
...
Рейтинг: 0 / 0
Вызов веб-метода через POST в C#
    #39126189
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vadim RomanenkoТ.е. на стороне Called - вот такой метод, например
Код: c#
1.
public JsonResult GetValues(String companyId, Long userId, List<string> codes)




Как нужно модифицировать вызов на стороне Caller?
А можно поинтересоваться зачем Вам нужно так вызывать?
...
Рейтинг: 0 / 0
Вызов веб-метода через POST в C#
    #39126243
Vadim Romanenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Axeleron,

да все по той же самой :) Есть веб-метод, который мне нужно вызвать. У него куча параметров, один из них - массив. Вобщем-то именно таковым и является тот метод, ради которого я затевал весь этот топик
...
Рейтинг: 0 / 0
Вызов веб-метода через POST в C#
    #39127211
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vadim Romanenko,
Так если веб-метод Ваш, то вызывайте и передавайте Ваш же доменный объект класса - а внего можете напихать что душе угодно. Не вижу в чем проблема?
...
Рейтинг: 0 / 0
25 сообщений из 52, страница 2 из 3
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Вызов веб-метода через POST в C#
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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