|
WCF REST клиент. 2 варианта ответа метода.
|
|||
---|---|---|---|
#18+
REST сервис может возвращать 2 совершенно разных XML-ответа: 1-й Код: xml 1. 2. 3.
2-й Код: xml 1. 2. 3. 4.
Когда какой вариант ответа придёт, заранее не известно. Необходимо объявить прокси-метод, который сможет десериализовывать оба варианта ответа. У меня сейчас такой вариант, но он может работать только с одним вариантом ответа: Код: 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.
То есть либо response, либо error (конкретно в представленном коде - response). А как сделать, чтобы обрабатывались (десериализовывались) оба варианта? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2016, 10:53 |
|
WCF REST клиент. 2 варианта ответа метода.
|
|||
---|---|---|---|
#18+
Vasiliy_Kashkin, а почему бы не возвращать оба варианта вместе? Зачем усложнять жизнь себе? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2016, 12:06 |
|
WCF REST клиент. 2 варианта ответа метода.
|
|||
---|---|---|---|
#18+
AxeleronVasiliy_Kashkin, а почему бы не возвращать оба варианта вместе? Зачем усложнять жизнь себе? Может быть сервис не его ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2016, 12:36 |
|
WCF REST клиент. 2 варианта ответа метода.
|
|||
---|---|---|---|
#18+
Ролг ХупинAxeleronVasiliy_Kashkin, а почему бы не возвращать оба варианта вместе? Зачем усложнять жизнь себе? Может быть сервис не его да, сервис не мой. Я пишу только клиента. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2016, 12:45 |
|
WCF REST клиент. 2 варианта ответа метода.
|
|||
---|---|---|---|
#18+
Vasiliy_KashkinРолг Хупинпропущено... Может быть сервис не его да, сервис не мой. Я пишу только клиента. Ну что я могу посоветовать? Сервис написан безобразно. Потому как вариант - просто получать SOAP XML и парсить его респонс при получении. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2016, 12:49 |
|
WCF REST клиент. 2 варианта ответа метода.
|
|||
---|---|---|---|
#18+
Vasiliy_KashkinРолг Хупинпропущено... Может быть сервис не его да, сервис не мой. Я пишу только клиента. в случае ошибки Код: xml 1. 2. 3. 4.
оно не генерирует exception на клиенте? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2016, 12:56 |
|
WCF REST клиент. 2 варианта ответа метода.
|
|||
---|---|---|---|
#18+
Ролг Хупин, генерирует Exception: ------------------------------------------------------------------------------------------------------------------------------ Необработанное исключение типа "System.Runtime.Serialization.SerializationException" в mscorlib.dll Дополнительные сведения: Невозможно десериализовать текст XML-сообщения с корневым именем "error" и корневым пространством имен "" (для операции "WallPost" и контракта ("IFlickrApi", " http://tempuri.org/")) с использованием XmlSerializer. Обеспечьте добавление типа, соответствующего XML, к известному семейству типов службы. ------------------------------------------------------------------------------------------------------------------------------ Что и понятно, для класса VK_Response задано XML-имя response, а не error. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2016, 13:06 |
|
WCF REST клиент. 2 варианта ответа метода.
|
|||
---|---|---|---|
#18+
Ролг Хупиноно не генерирует exception на клиенте? Не думаю. Похоже, это стандартный паттерн респонса сервиса, только обычно имплементация несколько более универсальная - с использованием status_code, а потом уже error_code, если статус код не success. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2016, 13:07 |
|
WCF REST клиент. 2 варианта ответа метода.
|
|||
---|---|---|---|
#18+
Вот если бы можно было определить что-то такое: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
То есть, чтобы в этот класс десериализовывались любые XML-документы - не важно, что в корне. Тогда в 1-м случае было бы заполнено только поле post_id, а во 2-м - только error_msg и post_id. Но к сожалению [XmlRoot("*")] - лишь моя придумка, то что я хочу найти, но не знаю, как оно выглядит. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2016, 13:13 |
|
WCF REST клиент. 2 варианта ответа метода.
|
|||
---|---|---|---|
#18+
* а во 2-м - только error_msg и error_code. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2016, 13:14 |
|
WCF REST клиент. 2 варианта ответа метода.
|
|||
---|---|---|---|
#18+
Vasiliy_Kashkin, а почему выбрали WCF для решения задачи? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2016, 06:16 |
|
WCF REST клиент. 2 варианта ответа метода.
|
|||
---|---|---|---|
#18+
skyANA, 1). Код получается красивым и элегантным. 2). Просто хотелось изучить возможности WCF. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.05.2016, 18:55 |
|
WCF REST клиент. 2 варианта ответа метода.
|
|||
---|---|---|---|
#18+
Vasiliy_KashkinskyANA, 1). Код получается красивым и элегантным. 2). Просто хотелось изучить возможности WCF. C HttpWebRequest или WebClient код тоже получается красивым и элегантным. А возможности WCF не изучить на REST сервисе и HTTP запросах. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.05.2016, 19:29 |
|
WCF REST клиент. 2 варианта ответа метода.
|
|||
---|---|---|---|
#18+
Vasiliy_KashkinРолг Хупинпропущено... Может быть сервис не его да, сервис не мой. Я пишу только клиента. Кстати, тут рядом в теме я спрашивал и сам же отвечал, добавьте такой отлов, мне помогло http://www.sql.ru/forum/1212778/kak-poluchit-tekst-oshibki-na-kliente ... |
|||
:
Нравится:
Не нравится:
|
|||
12.05.2016, 10:25 |
|
|
start [/forum/topic.php?fid=19&fpage=4&tid=1396768]: |
0ms |
get settings: |
12ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
30ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
others: | 279ms |
total: | 424ms |
0 / 0 |