Robert Novotny píše v Út 30. 09. 2008 v 11:25 +0200:
> Tiez sa pripajam k nazoru, ze pokial je k dispozicii WSDL,
> tak je urcite lepsie vygenerovat kod klienta cez WSDL2Java
> nez sa ho snazit zbastlit rucne.
>
> Co presne znamena
> > to, co mi vylezlo se vůbec nijak nepodobalo tomu, co se píše v
> > dokumentaci dál.
>
> Znamena to, ze vygenerovany klient nefungoval?
Abych řekl pravdu, tak nevím. Vypadl mi jeden soubor (přes 7000 řádků),
ze kterého jsem nebyl moc moudrý. No a pak dál podle dokumentace jsem se
pokoušel toho vygenerovaného klienta použít ale nepochodil jsem. Začal
jsem z toho úplně magořit, tak jsem toho nechal. A u axus-u (jak tu už
padlo s tím autentifikátorem) jsem nepochodil protože se mi hlavní uzel
generoval s tagem arg0 a nenašel jsem způsob, jak to změnit.
Nakonec jsem si vyrobil zprávu (přes javax.xml.soap.*) a pak ji
nasprosto poslal pomocí org.apache.commons.httpclient.HttpClient-a. Není
to moc profesionální, ale funguje to a zdrojáky mají celkem asi 400
řádek (včetně komentářů a čtení dat z ORA databáze).
PS ta služba je SAPová, ten wsdl podle toho vypadá. Ale vím, jak má
vypadat výsledná xml zpráva, takže ji mohu vyrobit celkem snadno.
>
> RN
>
> On Tue, 30 Sep 2008 11:08:22 +0200, Martin Kuba <[EMAIL PROTECTED]> wrote:
>
> > Vladimír Náprstek napsal(a):
> >> Zdravím,
> >> generování jsem zkoušel a nějak jsem se nikam nedostal, protože to, co
> >> mi vylezlo se vůbec nijak nepodobalo tomu, co se píše v dokumentaci dál.
> >
> > To se mi nezdá, vygenerovat stub z WSDL funguje podle mých zkušeností
> > nejspolehlivěji.
> > Naopak skládání SOAP requestu ručně nebo generování z WSDL za běhu
> > má sklon k vytvoření špatného XML.
> >
> >> Nicméně jsem našel jinou cestu (pro mne čitelnější) a zadrhl jsem se na
> >> kouzlu. Mám kód:
> >>
> >> MessageFactory messageFactory = MessageFactory.newInstance();
> >> SOAPMessage message = messageFactory.createMessage();
> >>
> >> SOAPPart soapPart = message.getSOAPPart();
> >> MimeHeaders hd = message.getMimeHeaders();
> >> String authorization = new BASE64Encoder().encode((userName + ":" +
> >> pass).getBytes());
> >> hd.addHeader("Authorization", "Basic " + authorization);
> >
> > Do manipulace HTTP hlaviček kvůli autentizaci bych se nepouštěl.
> >
> > U většiny webservicových frameworků se dá manipulovat část
> > odpovědná za HTTP transport, u Axis2 je to Commons HttpClient
> > a postup je popsán tady:
> >
> > http://ws.apache.org/axis2/1_4_1/http-transport.html#preemptive_auth
> >
> > Makub
>
>
>
--
s pozdravem
Vladimír Náprstek
E-mail : [EMAIL PROTECTED]