powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Не корректно импортируется WSDL VS 2012 из web service написанном на Delphi (RadXE3)
6 сообщений из 6, страница 1 из 1
Не корректно импортируется WSDL VS 2012 из web service написанном на Delphi (RadXE3)
    #38553234
Wizard2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте!
При импорте WSDL веб сервиса в VS 2013 ( веб сервис написан на Delphi (RadXE3)) при импорте функции сервиса происходит ошибка.
Функция описана в WSDL так
Код: xml
1.
2.
3.
4.
5.
    <message name="GetFileListByDocNumber4Response">
      <part name="AList" type="xs:string"/>
      <part name="AError" type="xs:string"/>
      <part name="return" type="xs:boolean"/>
    </message>


Импортер строит функцию в виде
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
    [System.Web.Services.Protocols.SoapRpcMethodAttribute("urn:uServiceDeskIntf-IServiceDeskRequerestEngine#GetFileListByDocNumber", RequestNamespace="urn:uServiceDeskIntf-IServiceDeskRequerestEngine", ResponseNamespace="urn:uServiceDeskIntf-IServiceDeskRequerestEngine")]
    [return: System.Xml.Serialization.SoapElementAttribute("AList")]
    public string GetFileListByDocNumber(string ANumber, out string AError, out bool @return) {
        object[] results = this.Invoke("GetFileListByDocNumber", new object[] {
                    ANumber});
        AError = ((string)(results[1]));
        @return = ((bool)(results[2]));
        return ((string)(results[0]));
    }


Пока не переправил таким образом ничего не отработало.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
    [System.Web.Services.Protocols.SoapRpcMethodAttribute("urn:uServiceDeskIntf-IServiceDeskRequerestEngine#GetFileListByDocNumber", RequestNamespace="urn:uServiceDeskIntf-IServiceDeskRequerestEngine", ResponseNamespace="urn:uServiceDeskIntf-IServiceDeskRequerestEngine")]
    [return: System.Xml.Serialization.SoapElementAttribute("AList")]
    public bool GetFileListByDocNumber(string ANumber, out string AList, out string AError) {
        object[] results = this.Invoke("GetFileListByDocNumber", new object[] {
                    ANumber});
        AError = ((string)(results[2]));
        AList = ((string)(results[1]));        
        return ((bool)(results[0]));
    }	



Может настройки какие есть у импортера, что бы он делал это корректно, потому как грустно будет импорт большого сервиса потом руками править.

В мире где каждый второй гений было бы страшно жить, поэтому я живу без страха.
...
Рейтинг: 0 / 0
Не корректно импортируется WSDL VS 2012 из web service написанном на Delphi (RadXE3)
    #38563308
Wizard2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Up
...
Рейтинг: 0 / 0
Не корректно импортируется WSDL VS 2012 из web service написанном на Delphi (RadXE3)
    #38563329
RomanH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Wizard2007,

Если бы у меня была возможность переделать сигнатуру метода, я бы переделал на:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
public GetFileListByDocNumberResult GetFileListByDocNumber(string ANumber)

class GetFileListByDocNumberResult 
{
public bool IsError {get;set;}
public string AError {get;set;}
public string AList {get;set;
.............................
}
...
Рейтинг: 0 / 0
Не корректно импортируется WSDL VS 2012 из web service написанном на Delphi (RadXE3)
    #38563851
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Wizard2007,

Может имеет смысл пересмотреть имена параметров метода, потому как имя одного из параметров совпадает с зарезервированным словом...
ни на что не намекает?
...
Рейтинг: 0 / 0
Не корректно импортируется WSDL VS 2012 из web service написанном на Delphi (RadXE3)
    #38565865
Wizard2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RomanH,

Попробовал воспользоваться вашим советом. писал класс и задал возвращаемый тип параметра этот класс
WSDL выдает

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
<types>
  <schema targetNamespace="urn:ServiceDeskRequerestEngineObjects">
    <complexType name="T_MyTest">
      <sequence><element name="Name" type="xs:string"/>
      </sequence>
    </complexType>
  </schema>
</types>  
  <message name="fnTest1Response">
    <part name="AError" type="xs:string"/>
    <part name="return" type="ns1:T_MyTest"/>
  </message>



при импорте ошибка

R2706: Для элемента wsdl:binding в ОПИСАНИИ ДОЛЖНО использоваться значение "literal" для атрибута Use во всех элементах soapbind:body, soapbind:fault, soapbind:header и soapbind:headerfault.

Дело в том , что Delphi не умеет делать веб сервисы, в которых бы использовался тип document|literal по поводу этого я задавал отдельный вопрос на форуме http://www.sql.ru/forum/1055300/indysoap-ispolzovat-document-literal-vmesto-rpc-encoding.
...
Рейтинг: 0 / 0
Не корректно импортируется WSDL VS 2012 из web service написанном на Delphi (RadXE3)
    #38565922
Wizard2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex Kuznetsov,

Функция возвращает результат своей работы True или False. Есть два варианта как это можно сделать - при помощи присвоения переменной Result соответствующего значения или через имя функции. Оба результата дают в WSDL выходной параметр названный return. Возможно ли поменять его и какими средствами это сделать я пока не знаю.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Не корректно импортируется WSDL VS 2012 из web service написанном на Delphi (RadXE3)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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