Входные параметры метода WCF Delphi7

У меня есть веб-сервис wcf (basicHttpBinding). Наши клиенты Delphi7 не могли исправить это. Я уже сгладил WSDL с помощью дополнений WCF. В порядке. Импортер wsdl в Delphi7 правильно генерирует прокси.

Теперь у меня проблемы с входными параметрами. у них всегда есть значения по умолчанию (пусто для строк, 0 для int).

Выходные значения из методов delphi7 становятся нормальными. например:

        public string Test(string a)
        {
              return "Test"+a;
        }

Этот метод всегда возвращает «Test». Моя система ведения журнала исправила, что у меня пустой метод at, поэтому проблема заключается в правильных входных параметрах передачи.

Я не могу понять, что не так

EDIT

прокси:

ISyncer = interface(IInvokable)
  ['{D46862B0-BDD3-8B80-35A8-A2AC69F24713}']
    function  Test(const a: String): String; stdcall;
  end;

call:

Sync:=(dmMain.HTTPRIO1 as ISyncer);
test:=Sync.Test('5555');

dmMain.HTTPRIO1 имеет soLiteralParams в параметрах:

init:

InvRegistry.RegisterInvokeOptions(TypeInfo(ISyncer), ioLiteral);

После вызова я получаю исключение с сообщением:

Error deserializtion message body for operation Test. 
Operation formatter detects ivalid message body. Expecting node type "Element"
with name "Test" and namespace "http://tempuri.org". Actually node type "Element"
with name "xsd:String" and namespace "http://w3.org/2001/XMLSchema"

фрагмент wsdl:

<xsd:element name="Test">
−
<xsd:complexType>
−
<xsd:sequence>
<xsd:element minOccurs="0" name="a" nillable="true" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
−
<xsd:element name="TestResponse">
−
<xsd:complexType>
−
<xsd:sequence>
<xsd:element minOccurs="0" name="TestResult" nillable="true" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>

EDIT2

Я исследую http-запросы:

.NET

<Test> xmlns="http://tempuri.org/"><a>5555</a></Test>

работает правильно;

Delph7

<Test xmlns="http://tempuri.org/"><xsd:a>5555</xsd:a></Test>

нулевой входной параметр. Проблема заключается в префиксе xsd

5
задан Andrew Kalashnikov 8 June 2011 в 08:57
поделиться