# SOAP auf HTTPS mit Authentifizierung



## jj060286 (15. Mai 2010)

Hallo Forum,

ich hänge jetzt schon seit einiger Zeit an einem Problem das in anderen Programmeirsprachen, sehr leich lösbar ist. Vielleicht kenne ich auch nur nciht das richtige Framework oder ich suche nach den falschen Begriffen.

kurz zur Beschreibung ich möchte auf einen Webservice zugrifen mittels SOAP, klingt ja erstmal recht einfach.

Frameworks : Axis2, JAXP , X-Fire

Super klappt das Problem der Webservice ist https und ich muss mich authentifizieren und jetzt hört es schon auf. Ich finde weder lektüre wo ähnliches beschrieben steht noch tutorials oder irgendetwas in diese Richtung.

Ist es dann so schweirig unter Java einen SOAP Client zu entwickeln??

Bitte helft mir.. mir würden auch Stichpunkte helfen anch denen ich suchen kann.

viele Grüße
JJ


----------



## musiKk (16. Mai 2010)

jj060286 hat gesagt.:


> Ist es dann so schweirig unter Java einen SOAP Client zu entwickeln??



Nein, wenn man weiß, wie es geht, ist es sogar sehr einfach.

Wie man sich authentifiziert, hängt von der Art der Authentifizierung ab. Für einfache Passwörter gibt es den Authenticator. Wenn die Authentifizierung hingegen über Zertifikate erfolgt, läuft das über sog. KeyStores. Ich habe dazu auch mal etwas geschrieben.

Übrigens: Benutzt Du wirklich JAXP? JAXB ist bedeutend einfacher zu benutzen und mit dem im JDK mitgelieferten [c]wsimport[/c] ist der Aufwand für den SOAP-Client gleich null, weil der ganze Code dabei automatisch aus dem WSDL generiert wird.


----------



## jj060286 (16. Mai 2010)

hi musikk,

dankE das hat mcih erstmal ein wenig weitergebracht.
allerdings ist meine WSDL Datei von einem Microsoft Service und man findet überall das die nicht valide WSDL Dateien erstellen.

also zuerst habe ich mir die wsdl datei heruntergelade, dann den wsimport angeschmissen 
und es kommt folgernder error.

[ERROR] undefined element declaration 'xsd:schema'
  line 182 of file:/C:/soapclient/webservice.wsdl

danach habe ich soap UI getestet daraus kann amn auch für sämtliche Frameworks Artefacts erstellen lassen(wusste ich auch nciht  ). gleicher fehler.

dann habe ich gegooglet und diese Seite gefunden:
How to deal with unresolved xs:schema references in WSDL | Java.net

dies habe ich auch ausprobiert und in eine Log DAtei schreiben lassen, da doch nun viel output kam.

c:\Programme\Java\jdk1.6.0_12\bin>wsimport -b http://www.w3.org/2001/XMLSchema.x
sd -b c:\soapclient\xsd.xjb -d c:\soapclient "c:\soapclient\webservice.wsdl" > c:\soapclient\wsimport.log

allerdings komme ich nun nicht mehr weiter, vielleicht kannst du mir nochmal helfen, hier ein kleriner ausschnitt aus meienr LOG DATEI


```
parsing WSDL...


[WARNING] src-resolve: Cannot resolve the name 'sqltypes:int' to a(n) 'type definition' component.
  line 490 of file:/C:/soapclient/webservice.wsdl/#types?schema9

[WARNING] cos-applicable-facets: Facet 'maxLength' is not allowed by type #AnonType_ItemNrIntpixiAddOrderLine.
  line 494 of file:/C:/soapclient/webservice.wsdl/#types?schema9

[WARNING] cos-applicable-facets: Facet 'maxLength' is not allowed by type #AnonType_LocationIDpixiAddOrderLine.
  line 503 of file:/C:/soapclient/webservice.wsdl/#types?schema9

[WARNING] cos-applicable-facets: Facet 'maxLength' is not allowed by type #AnonType_GiftMessagepixiAddOrderLine.
  line 510 of file:/C:/soapclient/webservice.wsdl/#types?schema9

[WARNING] cos-applicable-facets: Facet 'totalDigits' is not allowed by type #AnonType_DiscountPercentpixiAddOrderLine.
  line 517 of file:/C:/soapclient/webservice.wsdl/#types?schema9

[WARNING] cos-applicable-facets: Facet 'maxLength' is not allowed by type #AnonType_VoucherIDpixiAddOrderLine.
  line 525 of file:/C:/soapclient/webservice.wsdl/#types?schema9

[WARNING] cos-applicable-facets: Facet 'maxLength' is not allowed by type #AnonType_AddressRemarkspixiAddOrderLine.
  line 533 of file:/C:/soapclient/webservice.wsdl/#types?schema9

[.....]


[WARNING] src-resolve.4.2: Error resolving component 'xsd:schema'. It was detected that 'xsd:schema' is in namespace 'http://www.w3.org/2001/XMLSchema', but components from this namespace are not referenceable from schema document 'file:/C:/soapclient/webservice.wsdl#types?schema2'. If this is the incorrect namespace, perhaps the prefix of 'xsd:schema' needs to be changed. If this is the correct namespace, then an appropriate 'import' tag should be added to 'file:/C:/soapclient/webservice.wsdl#types?schema2'.
  line 182 of file:/C:/soapclient/webservice.wsdl#types?schema2

[ERROR] A class/interface with the same name "https.ReportLogisticQuality" is already in use. Use a class customization to resolve this conflict.
  line 2663 of file:/C:/soapclient/webservice.wsdl

[ERROR] (Relevant to above error) another "ReportLogisticQuality" is generated from here.
  line 2432 of file:/C:/soapclient/webservice.wsdl

[ERROR] A class/interface with the same name "https.ReportLogisticQualityResponse" is already in use. Use a class customization to resolve this conflict.
  line 2440 of file:/C:/soapclient/webservice.wsdl


[ERROR] (Relevant to above error) another "ReportLogisticQualityResponse" is generated from here.
  line 2679 of file:/C:/soapclient/webservice.wsdl

[ERROR] Two declarations cause a collision in the ObjectFactory class.
  line 2440 of file:/C:/soapclient/webservice.wsdl

[ERROR] (Related to above error) This is the other declaration.   
  line 2679 of file:/C:/soapclient/webservice.wsdl


[ERROR] Two declarations cause a collision in the ObjectFactory class.
  line 2663 of file:/C:/soapclient/webservice.wsdl

[ERROR] (Related to above error) This is the other declaration.   
  line 2432 of file:/C:/soapclient/webservice.wsdl
```


gibt es vielleciht noch eien andere Lösung wie ich mit dem Webservice kommunizieren kann?

so nach dem Motto: verbinden authentifizieren XML hinschicken Antwort bekommen XML-Antowrt auswerten

viele Grüße
JJ


----------



## jj060286 (16. Mai 2010)

Hab jetzt einen Workaround gemacht obwohl ich nciht der freund davon bin.
ich greife mit scanner auf eine webadresse zu wo ich ein PHP script ausführe, das macht den SOAP Request und gibt dann das XML an Java zurück.

Aber mir wäre es lieber wenn man das direkt aus Java heraus machen kann.


----------

