powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Сериализация объектов в WebService
4 сообщений из 4, страница 1 из 1
Сериализация объектов в WebService
    #34125099
Norex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ув. подскажите, в чём моя ошибка:

Имеются объекты:

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] — не получается.

Как правильно это делать?
...
Рейтинг: 0 / 0
Сериализация объектов в WebService
    #34125463
Norex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
При использовании SOAP 1.2 почему-то не работает нормально сериализация. :(

Почему?
PS. Попробуй-те посмотреть код, что я прислал, может на мысли натолкнёт?
...
Рейтинг: 0 / 0
Сериализация объектов в WebService
    #34126249
mclabman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Судя по тому, что вместо ExampleMethod (в образце), видим HelloWorld (в данных), приведенный код не соответствует тому, на котором вы отлаживаетесь.
...
Рейтинг: 0 / 0
Сериализация объектов в WebService
    #34126977
Norex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, 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>
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Сериализация объектов в WebService
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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