Конференция "Сети" » webservice soap header [D7]
 
  • hotshot (31.03.14 18:14) [0]
    Доброго дня.
    Может кто подскажет, как заполнить стандартный header в soap сообщении в webservice.

    Если создать класс:
    type
     MyHeader = class(TSOAPHeader)
     private
       FUser: string;
       FPass: string;
     published
       property User: String read FUser write FUser;
       property Pass: String read FPass write FPass;
     end;



    и затем сформировать:
     Headers := Self as ISoapHeaders;
     H := MyHeader.Create;
     H.User:='User';
     H.Pass:='password';
     Headers.Send(H);



    то в итоге формируется xml:
      <SOAP-ENV:Header SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:NS1="urn:TestIntf">
         <NS1:MyHeader xsi:type="NS1:MyHeader">
            <User xsi:type="xsd:string">User</User>
            <Pass xsi:type="xsd:string">password</Pass>
         </NS1:MyHeader>
      </SOAP-ENV:Header>

    а нужно так:
      <SOAP-ENV:Header SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
            <User xsi:type="xsd:string">User</User>
            <Pass xsi:type="xsd:string">password</Pass>
      </SOAP-ENV:Header>
  • Cobalt © (01.04.14 20:45) [1]
    Как насчёт пройтись отладчиком по внутренностям и посмотреть самому?
  • hotshot (02.04.14 12:16) [2]
    решилось перегрузкой функции ObjectToSoap,
    а вот как обратную процедуру проделать, т.е. заполнить класс таким присланным заголовком ума не приложу

    <SOAP-ENV:Header SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
           <User xsi:type="xsd:string">User</User>
           <Pass xsi:type="xsd:string">password</Pass>
     </SOAP-ENV:Header>

  • Cobalt © (02.04.14 14:50) [3]
    перегрузить SOAPToObject?
  • Cobalt © (02.04.14 14:52) [4]
    в конце концов, отчего бы не залезть внутрь метода ObjInstanceToSOAP и InitObjectFromSOAP?
  • hotshot (02.04.14 18:04) [5]
    Да не, решил проще выдернуть из HTTPSoapPascalInvoker BeforeDispatchEvent-а.
    Проблема решена, если кому понадобится на будущее.
    Спасибо.
 
Конференция "Сети" » webservice soap header [D7]
Есть новые Нет новых   [134427   +34][b:0][p:0.001]