# SOAP und Synonym-Wortschatz Leipzig



## Häcki. (31. Mai 2010)

Hallo Leute,

ich möchte gern via Java und SOAP den Webservice der Uni-Leipzig ansprechen und mir Synonyme ausgeben lassen.
Nun komme ich an einem bestimmten Punkt nicht mehr weiter.

WSDL-Datei hier: http://wortschatz.uni-leipzig.de/axis/services/Synonyms?wsdl


```
package berater;

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.Constants;
import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;

public class SoapRequest
{
	public static void main(String [] args)
	{
		try
		{
			String endpoint = "http://wortschatz.uni-leipzig.de:8100/axis/services/Synonyms";
			Service service = new Service();
			Call call = (Call) service.createCall();
			
			call.setTargetEndpointAddress(new java.net.URL(endpoint));
			call.setOperationName(new QName("http://datatypes.webservice.wortschatz.uni_leipzig.de", "execute"));
			call.setUsername("anonymous");
			call.setPassword("anonymous");
			call.addParameter("corpus", Constants.XSD_STRING, ParameterMode.IN);
			call.setReturnType(Constants.XSD_STRING);
			
			String ret = (String) call.invoke(new Object[] {"de"});
			System.out.println(ret);
		} 
		catch (Exception e)
		{
			System.err.println(e.toString());
		}
	}
}
```
Fehler:
org.xml.sax.SAXException: Bad types (class java.lang.String -> class de.uni_leipzig.wortschatz.webservice.datatypes.RequestParameter)

Setze ich statt "de" ein anderes Wort ein (de dürfte wohl die Bezeichnung für die Sprache sein), so bekomme ich einen "is not in use"-Fehler.

Kann mir jemand weiterhelfen, wie ich an diesen Webservice ein Wort senden kann und entsprechende Synonyme zurück bekomme?
Wäre klasse! Danke!


----------



## Ebenius (31. Mai 2010)

Wird wohl an Zeile 24 liegen. Nicht, dass ich sicher wäre…  Du behauptest, der ReturnType sei String. Ist aber laut WSDL kein String sondern ein ComplexType: [XML]<element name="executeResponse">
<complexType>
<sequence>
<element name="executeReturn" type="impl:ResponseParameter"/>
</sequence>
</complexType>
</element>
<complexType name="ResponseParameter">
<sequence>
<element name="executionTime" nillable="true" type="xsd:string"/>
<element name="result" nillable="true" type="implataMatrix"/>
<element name="serviceMagnitude" type="xsd:int"/>
<element name="userAmount" type="xsd:int"/>
<element name="userMaxLimit" type="xsd:int"/>
</sequence>
</complexType>[/XML]
Ebenius


----------



## Häcki. (31. Mai 2010)

Dann frage ich mal ganz doof:
Wie sage ich ihm denn, dass es sich um einen Complex-Type handelt?

Ein IMPL_DataMatrix kennt die Entwicklungsumgebung zumindest nicht.


----------



## Ebenius (31. Mai 2010)

Weiß ich nicht, hab mit Axis (ohne 2) noch nicht gearbeitet. Vielleicht weiß ein anderer mehr.

Ebenius


----------



## musiKk (31. Mai 2010)

[c]wsimport[/c] (im JDK enthalten) generiert aus dem WSDL automatisch einen JAX-WS-Client. Wenn Du nicht auf Axis angewiesen bist, probier das mal.


----------

