I am trying to accces a 3rd party webservice. I have imported WSDL (using
BDS2006).
On the THTTPRIO component i set the Port,Service og WSDLLocation properties.
When i run a function on the webservice i get a "Server was unable to
process request ---> Value Can not be Null. Parameter Name : Input"-error.
(All parameters are set properly, and i can access the webservice functions
from IE without any problems)
If i look at the envelope header it is <?xml version="1.0"?> and not <?xml
version="1.0" encoding="utf-8"?>
I have also tried to set THTTPRIO.HTTPWebNode.UTF8InHeader to True and
THTTPRIO.Converter i set soUTF8EncodeXML and soUTF8InHeader to True but with
the same result.
I am a newbie in webservices, and i googled around a bit and found an
example which basically set the Port,Service and WSDLLocation properties,
and the envelope displayed in the example did contain the
UTFencoding="utf-8"
I have tried to access the webservice using the MS XML 3.0 library and that
works fine, however i would prefer to use the nice proxy classes generated
from the WSDL by Delphi.
Does someone have any ideas on how to get it UTF-8 encoded from THTTPRIO ?
Thanks
Jan
> If i look at the envelope header it is <?xml version="1.0"?> and not
<?xml
> version="1.0" encoding="utf-8"?>
>
> I have also tried to set THTTPRIO.HTTPWebNode.UTF8InHeader to True and
> THTTPRIO.Converter i set soUTF8EncodeXML and soUTF8InHeader to True but
with
> the same result.
You can set the encoding at the XML level via the Converter.Encoding
property. For example,
HTTPRIO1.Converter.Encoding := 'utf-8';
Cheers,
Bruneau.
Thanks for the fast reply.
After your response i tried to set HTTPRIO1.Converter.Encoding := 'utf-8';
But i still get the same error message, and the header still doesn't contain
"utf-8".
Any other ideas are welcome :o)
Best regards
Jan
"Jean-Marie Babet" <bba...@borland.com> wrote in message
news:4546...@newsgroups.borland.com...
The envelope sent from HTTPRIO is :
<?xml version="1.0"?>
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<NS1:GetInfo xmlns:NS1="http://lundbeck.com/webservices/personnel/">
<initials xsi:type="xsd:string">JANL</initials>
</NS1:GetInfo>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Best regards
Jan
"Jan Lund" <N...@Spam.plz> wrote in message
news:4546...@newsgroups.borland.com...
> <initials xsi:type="xsd:string">JANL</initials>
The 'xsi:type' attribute makes me think that Delphi does not realize that
maybe the service uses the 'document' style. I've posted here details about
the importer relying on the older (i.e. .v1.0) way .NET services describe
they are document style. With .NET 2.0, there was a change that
unfortunately the importer does not catch.
If you would not mind posting the WSDL here, I can assess if that's the
case. Or, try the following:
In the binding, find the area of code that reads something along the lines
of:
InvRegistry.RegisterInterface(TypeInfo(InterfaceName), 'ns:something',
'encoding');
See if there's a line that reads something along the lines of the following
shortly after:
InvRegistry.RegisterInvokeOptions(TypeInfo(InterfaceName), ioDocument);
If not, please at the line above.
Let me know if this remedies.
Cheers,
Bruneau.
PS: For more information about the issue, see my post here. Although the
post refers to D7, this problem persists all the way to D2006 because, well
sadly, no one here tried to interop with a default .NET 2.0 service until
recently :(
or
I found that post a couple of hours ago and tried to add the IODocument
invokeoptions, but the problem is the same.
The webservice is written in VS2003 for .NET 1.0
Here are the imported WSDL Proxy classes (sorry - but it is quite big, and i
cant give you a link since it is running on our intranet)
Thanks for the link. I'll read through it tomorrow (it's getting quite late
here now :o)
Jan
// ************************************************************************
//
// The types declared in this file were generated from data read from the
// WSDL File described below:
// WSDL :
http://intranet.webservices.site.com/hlupersonnel/HLuPersonnel.asmx?WSDL
// Encoding : utf-8
// Codegen : [wfDebug,wfUseSerializerClassForAttrs]
// Version : 1.0
// (26-10-2006 10:32:03 - 1.33.2.5)
// ************************************************************************
//
unit HLuPersonnel;
interface
uses InvokeRegistry, SOAPHTTPClient, Types, XSBuiltIns;
type
//
************************************************************************ //
// The following types, referred to in the WSDL document are not being
represented
// in this file. They are either aliases[@] of other types represented or
were referred
// to but never[!] declared in the document. The types from the latter
category
// typically map to predefined/known XML or Borland types; however, they
could also
// indicate incorrect WSDL documents that failed to declare or import a
schema type.
//
************************************************************************ //
// !:string - "http://www.w3.org/2001/XMLSchema"
// !:boolean - "http://www.w3.org/2001/XMLSchema"
// !:short - "http://www.w3.org/2001/XMLSchema"
// !:dateTime - "http://www.w3.org/2001/XMLSchema"
PersonnelInfo4 = class; {
"http://site.com/webservices/personnel/" }
PersonnelInfo3 = class; {
"http://site.com/webservices/personnel/" }
PersonnelInfo = class; {
"http://site.com/webservices/personnel/" }
DepartmentInfo = class; {
"http://site.com/webservices/personnel/" }
RoomInfo = class; {
"http://site.com/webservices/personnel/" }
ArrayOfString = array of WideString; {
"http://site.com/webservices/personnel/" }
//
************************************************************************ //
// Namespace : http://site.com/webservices/personnel/
//
************************************************************************ //
PersonnelInfo4 = class(TRemotable)
private
FFirmanavn: WideString;
FFornavn: WideString;
FMellemnavne: WideString;
FEfternavn: WideString;
FInitialer: WideString;
FNavn: WideString;
FPersonalenr: WideString;
FAfdnavn_dk: WideString;
FAfdnavn_uk: WideString;
FAfdnr: WideString;
FSted: WideString;
FLokalnr: WideString;
FTelefax: WideString;
FAfdtelefax: WideString;
FTitel: WideString;
FBygning: WideString;
FAnsat_dato: TXSDateTime;
FFodsels_dato: WideString;
FUddannelse: WideString;
FJobkodetekst: WideString;
FMobiltelefon: WideString;
FDirektetelefon: WideString;
FPersonsoger: WideString;
FBipper: WideString;
FJobkodenr: WideString;
FGTA: WideString;
FFirmaadresse: WideString;
FFirmapostnr: WideString;
FFirmatelefon: WideString;
FFotoLink: WideString;
public
destructor Destroy; override;
published
property Firmanavn: WideString read FFirmanavn write FFirmanavn;
property Fornavn: WideString read FFornavn write FFornavn;
property Mellemnavne: WideString read FMellemnavne write FMellemnavne;
property Efternavn: WideString read FEfternavn write FEfternavn;
property Initialer: WideString read FInitialer write FInitialer;
property Navn: WideString read FNavn write FNavn;
property Personalenr: WideString read FPersonalenr write FPersonalenr;
property Afdnavn_dk: WideString read FAfdnavn_dk write FAfdnavn_dk;
property Afdnavn_uk: WideString read FAfdnavn_uk write FAfdnavn_uk;
property Afdnr: WideString read FAfdnr write FAfdnr;
property Sted: WideString read FSted write FSted;
property Lokalnr: WideString read FLokalnr write FLokalnr;
property Telefax: WideString read FTelefax write FTelefax;
property Afdtelefax: WideString read FAfdtelefax write FAfdtelefax;
property Titel: WideString read FTitel write FTitel;
property Bygning: WideString read FBygning write FBygning;
property Ansat_dato: TXSDateTime read FAnsat_dato write FAnsat_dato;
property Fodsels_dato: WideString read FFodsels_dato write
FFodsels_dato;
property Uddannelse: WideString read FUddannelse write FUddannelse;
property Jobkodetekst: WideString read FJobkodetekst write
FJobkodetekst;
property Mobiltelefon: WideString read FMobiltelefon write
FMobiltelefon;
property Direktetelefon: WideString read FDirektetelefon write
FDirektetelefon;
property Personsoger: WideString read FPersonsoger write FPersonsoger;
property Bipper: WideString read FBipper write FBipper;
property Jobkodenr: WideString read FJobkodenr write FJobkodenr;
property GTA: WideString read FGTA write FGTA;
property Firmaadresse: WideString read FFirmaadresse write
FFirmaadresse;
property Firmapostnr: WideString read FFirmapostnr write FFirmapostnr;
property Firmatelefon: WideString read FFirmatelefon write
FFirmatelefon;
property FotoLink: WideString read FFotoLink write FFotoLink;
end;
//
************************************************************************ //
// Namespace : http://site.com/webservices/personnel/
//
************************************************************************ //
PersonnelInfo3 = class(TRemotable)
private
FFirmanavn: WideString;
FFornavn: WideString;
FMellemnavne: WideString;
FEfternavn: WideString;
FInitialer: WideString;
FNavn: WideString;
FPersonalenr: WideString;
FAfdnavn_dk: WideString;
FAfdnavn_uk: WideString;
FAfdnr: WideString;
FSted: WideString;
FLokalnr: WideString;
FTelefax: WideString;
FAfdtelefax: WideString;
FTitel: WideString;
FBygning: WideString;
FAnsat_dato: TXSDateTime;
FFodsels_dato: WideString;
FUddannelse: WideString;
FJobkodetekst: WideString;
FMobiltelefon: WideString;
FDirektetelefon: WideString;
FPersonsoger: WideString;
FBipper: WideString;
FJobkodenr: WideString;
FGTA: WideString;
FFirmaadresse: WideString;
FFirmapostnr: WideString;
FFirmatelefon: WideString;
public
destructor Destroy; override;
published
property Firmanavn: WideString read FFirmanavn write FFirmanavn;
property Fornavn: WideString read FFornavn write FFornavn;
property Mellemnavne: WideString read FMellemnavne write FMellemnavne;
property Efternavn: WideString read FEfternavn write FEfternavn;
property Initialer: WideString read FInitialer write FInitialer;
property Navn: WideString read FNavn write FNavn;
property Personalenr: WideString read FPersonalenr write FPersonalenr;
property Afdnavn_dk: WideString read FAfdnavn_dk write FAfdnavn_dk;
property Afdnavn_uk: WideString read FAfdnavn_uk write FAfdnavn_uk;
property Afdnr: WideString read FAfdnr write FAfdnr;
property Sted: WideString read FSted write FSted;
property Lokalnr: WideString read FLokalnr write FLokalnr;
property Telefax: WideString read FTelefax write FTelefax;
property Afdtelefax: WideString read FAfdtelefax write FAfdtelefax;
property Titel: WideString read FTitel write FTitel;
property Bygning: WideString read FBygning write FBygning;
property Ansat_dato: TXSDateTime read FAnsat_dato write FAnsat_dato;
property Fodsels_dato: WideString read FFodsels_dato write
FFodsels_dato;
property Uddannelse: WideString read FUddannelse write FUddannelse;
property Jobkodetekst: WideString read FJobkodetekst write
FJobkodetekst;
property Mobiltelefon: WideString read FMobiltelefon write
FMobiltelefon;
property Direktetelefon: WideString read FDirektetelefon write
FDirektetelefon;
property Personsoger: WideString read FPersonsoger write FPersonsoger;
property Bipper: WideString read FBipper write FBipper;
property Jobkodenr: WideString read FJobkodenr write FJobkodenr;
property GTA: WideString read FGTA write FGTA;
property Firmaadresse: WideString read FFirmaadresse write
FFirmaadresse;
property Firmapostnr: WideString read FFirmapostnr write FFirmapostnr;
property Firmatelefon: WideString read FFirmatelefon write
FFirmatelefon;
end;
//
************************************************************************ //
// Namespace : http://site.com/webservices/personnel/
//
************************************************************************ //
PersonnelInfo = class(TRemotable)
private
FFirmanavn: WideString;
FFornavn: WideString;
FMellemnavne: WideString;
FEfternavn: WideString;
FInitialer: WideString;
FNavn: WideString;
FPersonalenr: WideString;
FAfdnavn_dk: WideString;
FAfdnavn_uk: WideString;
FAfdnr: WideString;
FSted: WideString;
FLokalnr: WideString;
FTelefax: WideString;
FAfdtelefax: WideString;
FTitel: WideString;
FBygning: WideString;
FAnsat_dato: TXSDateTime;
FFodsels_dato: WideString;
FUddannelse: WideString;
FJobkodetekst: WideString;
FMobiltelefon: WideString;
public
destructor Destroy; override;
published
property Firmanavn: WideString read FFirmanavn write FFirmanavn;
property Fornavn: WideString read FFornavn write FFornavn;
property Mellemnavne: WideString read FMellemnavne write FMellemnavne;
property Efternavn: WideString read FEfternavn write FEfternavn;
property Initialer: WideString read FInitialer write FInitialer;
property Navn: WideString read FNavn write FNavn;
property Personalenr: WideString read FPersonalenr write FPersonalenr;
property Afdnavn_dk: WideString read FAfdnavn_dk write FAfdnavn_dk;
property Afdnavn_uk: WideString read FAfdnavn_uk write FAfdnavn_uk;
property Afdnr: WideString read FAfdnr write FAfdnr;
property Sted: WideString read FSted write FSted;
property Lokalnr: WideString read FLokalnr write FLokalnr;
property Telefax: WideString read FTelefax write FTelefax;
property Afdtelefax: WideString read FAfdtelefax write FAfdtelefax;
property Titel: WideString read FTitel write FTitel;
property Bygning: WideString read FBygning write FBygning;
property Ansat_dato: TXSDateTime read FAnsat_dato write FAnsat_dato;
property Fodsels_dato: WideString read FFodsels_dato write
FFodsels_dato;
property Uddannelse: WideString read FUddannelse write FUddannelse;
property Jobkodetekst: WideString read FJobkodetekst write
FJobkodetekst;
property Mobiltelefon: WideString read FMobiltelefon write
FMobiltelefon;
end;
ArrayOfPersonnelInfo = array of PersonnelInfo; {
"http://site.com/webservices/personnel/" }
//
************************************************************************ //
// Namespace : http://site.com/webservices/personnel/
//
************************************************************************ //
DepartmentInfo = class(TRemotable)
private
Fafdnr: WideString;
Fafdnavn_DK: WideString;
Fafdnavn_UK: WideString;
published
property afdnr: WideString read Fafdnr write Fafdnr;
property afdnavn_DK: WideString read Fafdnavn_DK write Fafdnavn_DK;
property afdnavn_UK: WideString read Fafdnavn_UK write Fafdnavn_UK;
end;
ArrayOfDepartmentInfo = array of DepartmentInfo; {
"http://site.com/webservices/personnel/" }
//
************************************************************************ //
// Namespace : http://site.com/webservices/personnel/
//
************************************************************************ //
RoomInfo = class(TRemotable)
private
Fbygning: WideString;
Fsted: WideString;
published
property bygning: WideString read Fbygning write Fbygning;
property sted: WideString read Fsted write Fsted;
end;
ArrayOfRoomInfo = array of RoomInfo; {
"http://site.com/webservices/personnel/" }
//
************************************************************************ //
// Namespace : http://site.com/webservices/personnel/
// soapAction: http://site.com/webservices/personnel/%operationName%
// transport : http://schemas.xmlsoap.org/soap/http
// binding : PersonnelSoap
// service : Personnel
// port : PersonnelSoap
// URL :
http://intranet.webservices.site.com/hlupersonnel/HLuPersonnel.asmx
//
************************************************************************ //
PersonnelSoap = interface(IInvokable)
['{79AB6105-4A99-BFED-FE2B-0DABFD652EA3}']
function AllBuildingLevels(const addEmpty: Boolean): ArrayOfString;
stdcall;
function AllJobs: ArrayOfString; stdcall;
function AllDepartments(const language: WideString; const addEmpty:
Boolean): ArrayOfString; stdcall;
function AllEmployees(const includeName: Boolean): ArrayOfString;
stdcall;
function GetLocation(const dept: Smallint): ArrayOfString; stdcall;
function GetInfo(const initials: WideString): PersonnelInfo; stdcall;
function GetInfo3(const initials: WideString): PersonnelInfo3; stdcall;
function GetInfo4(const initials: WideString): PersonnelInfo4; stdcall;
function GetInfoHtml(const initials: WideString; const showPicture:
Boolean; const extInfo: WideString): WideString; stdcall;
function GetDepartments(const building: WideString; const level:
WideString): ArrayOfDepartmentInfo; stdcall;
function GetDepartmentString(const buildingLevel: WideString; const
room: Smallint): WideString; stdcall;
function GetLevelsInDepartment(const dept: Smallint): ArrayOfString;
stdcall;
function GetRoomsInDepartment(const dept: Smallint): ArrayOfRoomInfo;
stdcall;
function SearchEmployees(const building: WideString; const level:
WideString; const name: WideString; const firstName: WideString; const
middleName: WideString; const lastName: WideString; const initials:
WideString; const staffNo: WideString; const deptDK: WideString; const
deptUK: WideString;
const deptNo: WideString; const room:
WideString; const phone: WideString; const fax: WideString; const company:
WideString; const employedSince: WideString; const job: WideString):
ArrayOfPersonnelInfo; stdcall;
function SearchEmployees2(const building: WideString; const level:
WideString; const name: WideString; const firstName: WideString; const
middleName: WideString; const lastName: WideString; const initials:
WideString; const staffNo: WideString; const deptDK: WideString; const
deptUK: WideString;
const deptNo: WideString; const room:
WideString; const phone: WideString; const fax: WideString; const company:
WideString; const employedSince: WideString; const job: WideString; const
position: WideString): ArrayOfPersonnelInfo; stdcall;
function SearchEmployees3(const building: WideString; const level:
WideString; const name: WideString; const firstName: WideString; const
middleName: WideString; const lastName: WideString; const initials:
WideString; const staffNo: WideString; const deptDK: WideString; const
deptUK: WideString;
const deptNo: WideString; const room:
WideString; const phone: WideString; const fax: WideString; const company:
WideString; const employedSince: WideString; const employedBefore:
WideString; const job: WideString; const position: WideString;
const staffNoLessThan: WideString; const
staffNoGreaterThan: WideString): ArrayOfPersonnelInfo; stdcall;
function SearchEmployeesHtml(const building: WideString; const level:
WideString; const name: WideString; const firstName: WideString; const
middleName: WideString; const lastName: WideString; const initials:
WideString; const staffNo: WideString; const deptDK: WideString; const
deptUK: WideString;
const deptNo: WideString; const room:
WideString; const phone: WideString; const fax: WideString; const company:
WideString; const employedSince: WideString; const job: WideString):
WideString; stdcall;
function SearchEmployeesHtml2(const building: WideString; const level:
WideString; const name: WideString; const firstName: WideString; const
middleName: WideString; const lastName: WideString; const initials:
WideString; const staffNo: WideString; const deptDK: WideString; const
deptUK: WideString;
const deptNo: WideString; const room:
WideString; const phone: WideString; const fax: WideString; const company:
WideString; const employedSince: WideString; const job: WideString; const
position: WideString): WideString; stdcall;
function SearchEmployeesHtml3(const building: WideString; const level:
WideString; const name: WideString; const firstName: WideString; const
middleName: WideString; const lastName: WideString; const initials:
WideString; const staffNo: WideString; const deptDK: WideString; const
deptUK: WideString;
const deptNo: WideString; const room:
WideString; const phone: WideString; const fax: WideString; const company:
WideString; const employedSince: WideString; const employedBefore:
WideString; const job: WideString; const position: WideString;
const staffNoLessThan: WideString; const
staffNoGreaterThan: WideString): WideString; stdcall;
end;
function GetPersonnelSoap(UseWSDL: Boolean=System.False; Addr: string='';
HTTPRIO: THTTPRIO = nil): PersonnelSoap;
implementation
function GetPersonnelSoap(UseWSDL: Boolean; Addr: string; HTTPRIO:
THTTPRIO): PersonnelSoap;
const
defWSDL =
'http://intranet.webservices.site.com/hlupersonnel/HLuPersonnel.asmx?WSDL';
defURL =
'http://intranet.webservices.site.com/hlupersonnel/HLuPersonnel.asmx';
defSvc = 'Personnel';
defPrt = 'PersonnelSoap';
var
RIO: THTTPRIO;
begin
Result := nil;
if (Addr = '') then
begin
if UseWSDL then
Addr := defWSDL
else
Addr := defURL;
end;
if HTTPRIO = nil then
RIO := THTTPRIO.Create(nil)
else
RIO := HTTPRIO;
try
Result := (RIO as PersonnelSoap);
if UseWSDL then
begin
RIO.WSDLLocation := Addr;
RIO.Service := defSvc;
RIO.Port := defPrt;
end else
RIO.URL := Addr;
finally
if (Result = nil) and (HTTPRIO = nil) then
RIO.Free;
end;
end;
destructor PersonnelInfo4.Destroy;
begin
if Assigned(FAnsat_dato) then
FAnsat_dato.Free;
inherited Destroy;
end;
destructor PersonnelInfo3.Destroy;
begin
if Assigned(FAnsat_dato) then
FAnsat_dato.Free;
inherited Destroy;
end;
destructor PersonnelInfo.Destroy;
begin
if Assigned(FAnsat_dato) then
FAnsat_dato.Free;
inherited Destroy;
end;
initialization
InvRegistry.RegisterInterface(TypeInfo(PersonnelSoap),
'http://site.com/webservices/personnel/', 'utf-8');
InvRegistry.RegisterDefaultSOAPAction(TypeInfo(PersonnelSoap),
'http://site.com/webservices/personnel/%operationName%');
InvRegistry.RegisterInvokeOptions(TypeInfo(PersonnelSoap),ioDocument);
RemClassRegistry.RegisterXSInfo(TypeInfo(ArrayOfString),
'http://site.com/webservices/personnel/', 'ArrayOfString');
RemClassRegistry.RegisterXSClass(PersonnelInfo4,
'http://site.com/webservices/personnel/', 'PersonnelInfo4');
RemClassRegistry.RegisterXSClass(PersonnelInfo3,
'http://site.com/webservices/personnel/', 'PersonnelInfo3');
RemClassRegistry.RegisterXSClass(PersonnelInfo,
'http://site.com/webservices/personnel/', 'PersonnelInfo');
RemClassRegistry.RegisterXSInfo(TypeInfo(ArrayOfPersonnelInfo),
'http://site.com/webservices/personnel/', 'ArrayOfPersonnelInfo');
RemClassRegistry.RegisterXSClass(DepartmentInfo,
'http://site.com/webservices/personnel/', 'DepartmentInfo');
RemClassRegistry.RegisterXSInfo(TypeInfo(ArrayOfDepartmentInfo),
'http://site.com/webservices/personnel/', 'ArrayOfDepartmentInfo');
RemClassRegistry.RegisterXSClass(RoomInfo,
'http://site.com/webservices/personnel/', 'RoomInfo');
RemClassRegistry.RegisterXSInfo(TypeInfo(ArrayOfRoomInfo),
'http://site.com/webservices/personnel/', 'ArrayOfRoomInfo');
end.
"Jean-Marie Babet" <bba...@borland.com> wrote in message
news:4547c360$1...@newsgroups.borland.com...
I'm going back to your original post:
> On the THTTPRIO component i set the Port,Service og WSDLLocation
properties.
I would suggest not to use the WSDLLocation properties. The initial version
of Delphi SOAP (D6) needed the WSDL at runtime because it did not cache the
SOAPAction (and something else that's escaping me right now). In a
subsequent release (I believe Update2) this was remedied such that the WSDL
was no longer required. The issue is that the parser that looks at the
WSDLLocation properties does not handle <import...>.
Instead, I would recommend the factory method generated in the binding.
Say, you have a THTTPRIO instance named HTTPRIO1. To initialize it, use the
factory method generated in the proxy:
Service := GetPersonnelSoap(False, '', HTTPRIO1);
If that does not help, please email me the WSDL to bba...@borland.com, if
that's possible. I simply want to look at it and see if I spot known issues
that would cause the importer to generate an incorrect binding. I'll look
for things such as non-qualified elementFormDefault attribute on schemas (or
just non-default 'Form' attribute on <element...>), <choice....>, list
derivation, etc.
Cheers,
Bruneau.
> Service := GetPersonnelSoap(False, '', HTTPRIO1);
That did it!
Thank you very much for your help and quick response.
Best regards
Jan
"Jean-Marie Babet" <bba...@borland.com> wrote in message
news:4547d4e5$1...@newsgroups.borland.com...
InvRegistry.RegisterInvokeOptions(TypeInfo(PersonnelSoap), ioDocument);
addtion is necessary (just in case somone else ran into the same problem)
Jan
"Jan Lund" <N...@Spam.plz> wrote in message
news:45484108$1...@newsgroups.borland.com...