Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Сериализация объектов в WebService
|
|||
|---|---|---|---|
|
#18+
Ув. подскажите, в чём моя ошибка: Имеются объекты: public class Item { public int a; public string b; } //А так же объект "Ответ" public class Request { public int z; public string x; public Item[] Items; } А так же имеется WebService [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] public class WebService : System.Web.Services.WebService { [WebMethod] public bool ExampleMethod(Request req) { // Тут я чёт делаю с req return false; } } При этом TestForm WebService'а говорит мне следующее: SOAP 1.2 POST /WebSite1/WebService.asmx HTTP/1.1 Host: localhost Content-Type: application/soap+xml; charset=utf-8 Content-Length: length <?xml version="1.0" encoding="utf-8"?> <soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"> <soap12:Body> <ExampleMethod xmlns="http://tempuri.org/"> <req> <z>int</z> <x>string</x> <Items> <Item> <a>int</a> <b>string</b> </Item> <Item> <a>int</a> <b>string</b> </Item> </Items> </req> </ExampleMethod> </soap12:Body> </soap12:Envelope> В JavaScript'e я честно использую AJAX (Microsoft AJAX Extention (ATLAS) использовать не могу), приблизительно следующим образом: var req; function Send(xmlSoapData) { req = new XMLHttpRequest(); req.onreadystatechange = OnRearyStateChange; req.open("POST", "http://localhost/webservice.asmx", true); //Это требует SOAP 1.2 req.setRequestHeader("Content-Type", "application/soap+xml; charset=utf-8"); req.send(mlSoapData); } function OnRearyStateChange(result) { if (req.readyState == 4) { if (req.status == 200) { OnSuccess(result); } } } function OnSuccess(result) { //Тут я нормально получаю bool от моего сервиса. } В качестве xmlSoapData отправляю следующие данные: <?xml version="1.0" encoding="utf-8"?> <soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"> <soap12:Body> <HelloWorld xmlns="http://tempuri.org/"> <req> <z>10</z> <x>Ten</x> <Items> <Item> <a>0</a> <b>Zero</b> </Item> <Item> <a>1</a> <b>One</b> </Item> <Item> <a>2</a> <b>Two</b> </Item> </Items> </req> </HelloWorld> </soap12:Body> </soap12:Envelope> Всё хорошо, вот только есть проблема, а именно в десериализации Items[] — просто не десериализируются. Пробывал делать List<Item> Items — не получает. Добавлял аттрибуты [XmlArray], [XmlArryaItem] — не получается. Как правильно это делать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2006, 19:41 |
|
||
|
Сериализация объектов в WebService
|
|||
|---|---|---|---|
|
#18+
При использовании SOAP 1.2 почему-то не работает нормально сериализация. :( Почему? PS. Попробуй-те посмотреть код, что я прислал, может на мысли натолкнёт? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2006, 00:00 |
|
||
|
Сериализация объектов в WebService
|
|||
|---|---|---|---|
|
#18+
Судя по тому, что вместо ExampleMethod (в образце), видим HelloWorld (в данных), приведенный код не соответствует тому, на котором вы отлаживаетесь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2006, 11:17 |
|
||
|
Сериализация объектов в WebService
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, mclabman, Вы писали: M>Судя по тому, что вместо ExampleMethod (в образце), видим HelloWorld (в данных), приведенный код не соответствует тому, на котором вы отлаживаетесь. M> данное сообщение получено с www.gotdotnet.ru M>ссылка на оригинальное сообщение Прощу прощения, писал прямо на форуме. Вот исправление: <?xml version="1.0" encoding="utf-8"?> <soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"> <soap12:Body> <ExampleMethod xmlns="http://tempuri.org/"> <req> <z>10</z> <x>Ten</x> <Items> <Item> <a>0</a> <b>Zero</b> </Item> <Item> <a>1</a> <b>One</b> </Item> <Item> <a>2</a> <b>Two</b> </Item> </Items> </req> </ExampleMethod> </soap12:Body> </soap12:Envelope> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2006, 13:38 |
|
||
|
|

start [/forum/topic.php?fid=18&msg=34126977&tid=1387599]: |
0ms |
get settings: |
6ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
132ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
27ms |
get tp. blocked users: |
1ms |
| others: | 212ms |
| total: | 406ms |

| 0 / 0 |
