|
Вызов веб-метода через POST в C#
|
|||
---|---|---|---|
#18+
Привет всем! Есть некое приложение на шарпе. Нужно вызвать метод развернутого веб-приложения ASP.NET MVC. При этом есть два момента: - в удаленном методе один из параметров - List<String> - вызов нужно сделать методом POST Для определенности - сигнатура удаленного метода Код: c# 1.
Хотелось бы реализовать без использования сторонних библиотек. Ну и еще момент для определенности - вызов выполняю из контроллера своего ASP.NET MVC приложения, .NET FrameWork 4 ПС: кучу примеров по вызову через POST - видел. Но там везде какого-то фига передают строки через POST Заранее спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2015, 20:24 |
|
Вызов веб-метода через POST в C#
|
|||
---|---|---|---|
#18+
Vadim RomanenkoНо там везде какого-то фига передают строки через POST json-данные - тож строка ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2015, 20:27 |
|
Вызов веб-метода через POST в C#
|
|||
---|---|---|---|
#18+
Изопропилjson-данные - тож строка Я понимаю. Но с той стороны почему-то не хотят понимать лист как строку. Переделываю из такого вызова: Код: c# 1. 2. 3. 4. 5. 6.
Указанным выше способом - не работает. Хотя если код один и его передаю просто как строку - то работает... Забавная ситуация. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2015, 20:38 |
|
Вызов веб-метода через POST в C#
|
|||
---|---|---|---|
#18+
Vadim RomanenkoИзопропилjson-данные - тож строка Я понимаю. Но с той стороны почему-то не хотят понимать лист как строку. Переделываю из такого вызова: Код: c# 1. 2. 3. 4. 5. 6.
Указанным выше способом - не работает. Хотя если код один и его передаю просто как строку - то работает... Забавная ситуация. Жестишь. А че вообще весь код в кавычки не возьмешь? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.12.2015, 23:39 |
|
Вызов веб-метода через POST в C#
|
|||
---|---|---|---|
#18+
Vadim RomanenkoИзопропилjson-данные - тож строка Я понимаю. Но с той стороны почему-то не хотят понимать лист как строку. Переделываю из такого вызова: Код: c# 1. 2. 3. 4. 5. 6.
Указанным выше способом - не работает. Хотя если код один и его передаю просто как строку - то работает... Забавная ситуация. Вы сами это придумали или где-то нашли? Посмотрите на один из тысячи примеров и сделайте также ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2015, 11:18 |
|
Вызов веб-метода через POST в C#
|
|||
---|---|---|---|
#18+
MonochromatiqueVadim Romanenkoпропущено... Я понимаю. Но с той стороны почему-то не хотят понимать лист как строку. Переделываю из такого вызова: Код: c# 1. 2. 3. 4. 5. 6.
Указанным выше способом - не работает. Хотя если код один и его передаю просто как строку - то работает... Забавная ситуация. Жестишь. А че вообще весь код в кавычки не возьмешь? А какой смысл выдумывать произведение Шекспира для вызова определенного веб-метода? Ну а если такой смысл есть - напишите, пожалуйста, какой-нибудь пример, если не сложно blestВы сами это придумали или где-то нашли? Посмотрите на один из тысячи примеров и сделайте также Уважаемый blest, уже перелопатил кучу примеров, но, как и писалось в стартпосте, люди передают исключительно строки. Найти пример с передачей массивов или сложных объектов пока не получилось. Отдельной проблемой видится то, что люди показывают пример вызова, но не показывают сигнатуру вызываемой стороны. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2015, 13:52 |
|
Вызов веб-метода через POST в C#
|
|||
---|---|---|---|
#18+
Vadim Romanenko, ок. Напишите пожалуйста тип (.Net) который вы ходите получить в результате запроса? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2015, 13:58 |
|
Вызов веб-метода через POST в C#
|
|||
---|---|---|---|
#18+
blest, пусть метод GetValues будет возвращать обернутым в JSON List<MyValue>, где MyValue будет классом, имеющим два свойства типа String - code и value. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2015, 14:05 |
|
Вызов веб-метода через POST в C#
|
|||
---|---|---|---|
#18+
Vadim RomanenkoПосмотрите на один из тысячи примеров и сделайте также Уважаемый blest, уже перелопатил кучу примеров, но, как и писалось в стартпосте, люди передают исключительно строки. Найти пример с передачей массивов или сложных объектов пока не получилось. Отдельной проблемой видится то, что люди показывают пример вызова, но не показывают сигнатуру вызываемой стороны.[/quot] У вас проблема с сигнатурой List<string> ? Вот конкретный пример Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Для распарсивания стринги в Json формате можете использовать например JsonConvert ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2015, 14:15 |
|
Вызов веб-метода через POST в C#
|
|||
---|---|---|---|
#18+
Тут , например, постят файлы с разными параметрами. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2015, 15:00 |
|
Вызов веб-метода через POST в C#
|
|||
---|---|---|---|
#18+
blest, попробовал вот так: Код: c# 1. 2. 3. 4. 5. 6. 7.
не прокатило. По какой-то причине codes, содержащий две строки, воспринимается на удаленной стороне как List из одной строки, содержащий обе исходных. Единственная строка в List -имеет такой вид: Код: plaintext
Т.е. передавался List из двух строк, а у принимающей стороны - оказался List из одной строки... ПС: я, видимо, некорректно уточнил вопрос. Я вызываю некий метод, принимающий один параметр - List<String>. А возвращает этот метод сложный объект На всякий случай - еще раз сигнатура удаленного метода: Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2015, 15:23 |
|
Вызов веб-метода через POST в C#
|
|||
---|---|---|---|
#18+
Vadim Romanenkoblest, попробовал вот так: Код: c# 1. 2. 3. 4. 5. 6. 7.
не прокатило. По какой-то причине codes, содержащий две строки, воспринимается на удаленной стороне как List из одной строки, содержащий обе исходных. Единственная строка в List -имеет такой вид: Код: plaintext
Т.е. передавался List из двух строк, а у принимающей стороны - оказался List из одной строки... ПС: я, видимо, некорректно уточнил вопрос. Я вызываю некий метод, принимающий один параметр - List<String>. А возвращает этот метод сложный объект На всякий случай - еще раз сигнатура удаленного метода: Код: c# 1.
Вадим, Вы попробовали мой вариант запроса? Если он выполняется успешно (что верно на 100%) конвертируйте его уже в любой свой вариант. Далее Вам уже сказали JsonResult это и есть строка, просто эта строка имеет Json-форма ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2015, 15:36 |
|
Вызов веб-метода через POST в C#
|
|||
---|---|---|---|
#18+
blest, повторюсь. У меня нет проблем с тем, чтоб разобрать РЕЗУЛЬТАТ выполнения веб-метода. У меня проблема с ПЕРЕДАЧЕЙ этому веб-методу параметра, объявленного как List<String>. Ваш вариант сейчас попробую ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2015, 15:44 |
|
Вызов веб-метода через POST в C#
|
|||
---|---|---|---|
#18+
blest, Вот и результат. Код из прожекта: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
При этом вот код вызываемого тестового удаленного метода Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
После вызова response.IsSuccessStatusCode == false ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2015, 15:51 |
|
Вызов веб-метода через POST в C#
|
|||
---|---|---|---|
#18+
Да, я был неправ. Стоит директива HttpGet. но почему-то при смене на HttpPost - тестовый сервис публикуется с доступом только через GET. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2015, 15:57 |
|
Вызов веб-метода через POST в C#
|
|||
---|---|---|---|
#18+
Итак, решил начать с чистого листа. Создано 2 тестовых проекта ASP.NET MVC 4. Скачать их можно здесь Если вкратце, то метод в проекте CallerPrj вызывает метод проекта CalledPrj. Сначала запускаем проект CalledPrj, соответственно меняем URL в проекте CallerPrj, запускаем и переходим по условному адресу http://localhost:24143/api/Values?MyTest Если поставить breakpoint в проекте CalledPrj.ValuesController.MyTest, то увидим, что массив пришел абсолютно пустым. И вот возникает вопрос - что же я делаю не так ?? Если вкратце, то содержимое главного вызываемого метода проекта CalledPrj: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
и код вызывающего метода проекта 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2015, 16:56 |
|
Вызов веб-метода через POST в C#
|
|||
---|---|---|---|
#18+
Vadim Romanenko, Смешались в кучу кони, люди... Клиентскую часть сделайте в точности по моему примеру Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Сколько значений при этом попадет в метод MyTest(List<String> values) ? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2015, 17:22 |
|
Вызов веб-метода через POST в C#
|
|||
---|---|---|---|
#18+
blest, если я правильно понимаю сигнатуру использованного Вами метода, то Вы предлагаете вызвать некий метод по некоему url с двумя строковыми параметрами с одинаковым именем. А не с одним параметром типа List<String>. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2015, 17:26 |
|
Вызов веб-метода через POST в C#
|
|||
---|---|---|---|
#18+
Vadim RomanenkoЕсли поставить breakpoint в проекте CalledPrj.ValuesController.MyTest, то увидим, что массив пришел абсолютно пустым. В Вашем коде не нашел вызова этого метода... ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2015, 17:29 |
|
Вызов веб-метода через POST в C#
|
|||
---|---|---|---|
#18+
blest, Я понял суть Вашей идеи :) Попробовал вот так: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
но, к сожалению, в результате все равно пустой List в CalledPrj ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2015, 17:31 |
|
Вызов веб-метода через POST в C#
|
|||
---|---|---|---|
#18+
Вручную править Ваш код, чтобы еще и вызов делать, лень. Так бы сказал что не так. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2015, 17:31 |
|
Вызов веб-метода через POST в C#
|
|||
---|---|---|---|
#18+
Vadim Romanenkoblest, если я правильно понимаю сигнатуру использованного Вами метода, то Вы предлагаете вызвать некий метод по некоему url с двумя строковыми параметрами с одинаковым именем. А не с одним параметром типа List<String>. Именно! ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2015, 17:36 |
|
Вызов веб-метода через POST в C#
|
|||
---|---|---|---|
#18+
Axeleron, поправил код по Вашему замечанию. blest, Плюс добавил два метода вызова последовательно. https://www.dropbox.com/s/0ar6ys9jed412iy/Tests.zip?dl=0 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2015, 17:37 |
|
Вызов веб-метода через POST в C#
|
|||
---|---|---|---|
#18+
blestVadim Romanenkoblest, если я правильно понимаю сигнатуру использованного Вами метода, то Вы предлагаете вызвать некий метод по некоему url с двумя строковыми параметрами с одинаковым именем. А не с одним параметром типа List<String>. Именно! Не получилось. В обновленных сырцах - то, как вызывалось в соответствии с Вашим предложением ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2015, 17:38 |
|
Вызов веб-метода через POST в C#
|
|||
---|---|---|---|
#18+
blestVadim Romanenkoblest, если я правильно понимаю сигнатуру использованного Вами метода, то Вы предлагаете вызвать некий метод по некоему url с двумя строковыми параметрами с одинаковым именем. А не с одним параметром типа List<String>. Именно! Вот зачем Вы человека в заблуждение вводите? Там же видно, что в коде полный бред, а вы Боржоми от цирроза пытаетесь спасти... ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2015, 17:39 |
|
|
start [/forum/topic.php?fid=20&msg=39125350&tid=1400625]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
43ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 158ms |
0 / 0 |