Я использую Visual Studio 2008 для написания простого веб-сервиса, но столкнулся с некоторыми проблемами.Вам может потребоваться отформатировать мой
Полное ожидаемое сообщение выглядит примерно так:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema targetNamespace = "http://www.website.com/WS/"
elementFormDefault = "qualified"
xmlns = "http://www.website.com/WS/"
xmlns:xs = "http://www.w3.org/2001/XMLSchema"
>
<xs:element name="QUERYFOOTBALL">
<xs:complexType>
<xs:sequence>
<xs:element name="KEY" minOccurs="1" maxOccurs="1" type="xs:string" />
<xs:element name="FOOTBALL">
<xs:complexType>
<xs:sequence>
<xs:element name="HEADER" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="TEAM_ID" minOccurs="1" maxOccurs="1" type="xs:string" />
<xs:element name="MATCH_ID" minOccurs="1" maxOccurs="1" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="GAME" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="ONE" minOccurs="1" maxOccurs="1" type="xs:string" />
<xs:element name="TWO" minOccurs="1" maxOccurs="1" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Однако, когда я генерирую сервис, макет / вызов SOAP-сообщения выглядит так
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<QueryFootball xmlns="http://www.website.com/WS/">
<QUERYFOOTBALL>
<KEY>string</KEY>
<FOOTBALL>
<HEADER>
<TEAM_ID>string</TEAM_ID>
<MATCH_ID>string</MATCH_ID>
</HEADER>
<GAME>
<ONE>string</ONE>
<TWO>string</TWO>
</GAME>
</FOOTBALL>
</QUERYFOOTBALL>
</QueryFootball>
</soap:Body>
</soap:Envelope>
Мой действительный код C # выглядит следующим образом:
namespace FootballSimulator
{
[System.ServiceModel.ServiceBehaviorAttribute(InstanceContextMode=System.ServiceModel.InstanceContextMode.PerCall, ConcurrencyMode=System.ServiceModel.ConcurrencyMode.Single)]
public class FootballSimulator : IFootballSimulator
{
public virtual QUERYFOOTBALLRESPONSE QUERYFOOTBALL(QUERYFOOTBALL request)
{
throw new System.NotImplementedException();
}
}
}
Наверное, мой вопрос заключается в том, как я могу отредактировать Schema / WSCFBlue, чтобы он не вызывал этого лишнего в запросе SOAP?
Буду очень признателен за любые советы / рекомендации, которые вы можете дать.Я могу дать вам общее представление о том, что я сделал:
- В Visual Studio я щелкнул правой кнопкой мыши свои 2 схемы (запрос и ответное сообщение) и выбрал WSCFblue, затем Создать описание интерфейса WSDL
- Iвыбрал правильные схемы / порты и дал им сообщение с именем QUERYFOOTBALL и сообщением с именем QUERYFOOTBALLRESPONSE
- Я щелкнул правой кнопкой мыши WSDL, созданный на предыдущих этапах, и выбрал WSCFblue, затем сгенерировать код контракта данных (что делает и дает мне мои объекты QUERYFOOTBALL и QUERYFOOTBALLRESPONSE)
- Я щелкнул правой кнопкой мыши по WSDL и выбрал WSCFblue, затем сгенерировал код веб-службы
Если есть что-то очевидное, что я делаю неправильноЯ был бы очень признателен, если бы вы могли показать мне, что это такое.Похоже, что имя метода является причиной добавления дополнительного тега к ожидаемому сообщению мыла.В моей схеме после того, как элементом QUERYFOOTBALL является другой элемент с именем KEY, по этой причине я не могу просто извлечь QUERYFOOTBALL и создать объект с именем "FOOTBALL".
Я хочу, чтобы веб-сервис принимал следующее:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<QUERYFOOTBALL>
<KEY>string</KEY>
<FOOTBALL>
<HEADER>
<TEAM_ID>string</TEAM_ID>
<MATCH_ID>string</MATCH_ID>
</HEADER>
<GAME>
<ONE>string</ONE>
<TWO>string</TWO>
</GAME>
</FOOTBALL>
</QUERYFOOTBALL>
</soap:Body>
</soap:Envelope>
Очень ценю любую помощь, которую вы можете оказать, с нетерпением ждем ваших впечатлений / мнений / советов