Hallo alle Zusammen!
Ich versuche ein Web Service, das mir Daten aus einer MySQL Datenbank holen soll.
Der Server benutzt einige JavaBeans um die Typen zu serialisieren. Als Ergebnis soll
ich ein String in Form von XML-Dokument erhalten.Das Erstellen vom XML-Dokument geschieht
durch eine andere Klasse. Das Alles funktioniert als normale
Javaprogramm wunderbar und liefert mir die Daten sehr korrekt(ich habe es getestet).
Aber als Web Services bekommen ein Null-Ergebnis:
<pre>
<ns1:zeigeAlleArtikelResponse xmlns:ns1="urn:AnfrageService"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<return xsi:type="xsd:string" xsi:nil="true"/>
</pre>
Ich weiss nicht, was ich falsch mache.
Ich danke für Ihre Hilfe!
Hier ist ein Teil des Soapclients:
<pre>
SOAPMappingRegistry smr = new SOAPMappingRegistry();
BeanSerializer beanSer = new BeanSerializer();
// Mapping der Typen.
smr.mapTypes(Constants.NS_URI_SOAP_ENC,
new QName("urn:artikel", "artikel"),
Artikel.class, beanSer, beanSer);
// Setup von Call
Call call = new Call();
call.setSOAPMappingRegistry(smr);
call.setTargetObjectURI("urn:AnfrageService");
call.setMethodName("zeigeAlleArtikel");
call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC );
// call aufrufen.
Response resp = null;
try{
URL url = new URL(RPCROUTER);
resp = call.invoke(url, "");
}
catch (SOAPException e){
out.println("Caught SOAPException (" +
e.getFaultCode() + "): " +
e.getMessage());
}
// Antwort überprüfen.
if (!resp.generatedFault()){ // Keine SOAP-Fehler
Parameter results = resp.getReturnValue();
Artikel values = (Artikel)results.getValue();
if (values != null) // Werte wurden zurückgeliefert
out.println(values);
else // Werte wurden nicht geliefert
out.println("Erfolgreiche Anfrage" +
", aber es wurden keine Artikel gefunden");
}
else // Es gibt SOAP-Fehler
{
Fault fault = resp.getFault();
out.println("Generierter Fehler: ");
out.println ("Fehler-Code = " + fault.getFaultCode());
out.println ("Fehler-Text = " + fault.getFaultString());
}
</pre>
Haman
Ich versuche ein Web Service, das mir Daten aus einer MySQL Datenbank holen soll.
Der Server benutzt einige JavaBeans um die Typen zu serialisieren. Als Ergebnis soll
ich ein String in Form von XML-Dokument erhalten.Das Erstellen vom XML-Dokument geschieht
durch eine andere Klasse. Das Alles funktioniert als normale
Javaprogramm wunderbar und liefert mir die Daten sehr korrekt(ich habe es getestet).
Aber als Web Services bekommen ein Null-Ergebnis:
<pre>
<ns1:zeigeAlleArtikelResponse xmlns:ns1="urn:AnfrageService"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<return xsi:type="xsd:string" xsi:nil="true"/>
</pre>
Ich weiss nicht, was ich falsch mache.
Ich danke für Ihre Hilfe!
Hier ist ein Teil des Soapclients:
<pre>
SOAPMappingRegistry smr = new SOAPMappingRegistry();
BeanSerializer beanSer = new BeanSerializer();
// Mapping der Typen.
smr.mapTypes(Constants.NS_URI_SOAP_ENC,
new QName("urn:artikel", "artikel"),
Artikel.class, beanSer, beanSer);
// Setup von Call
Call call = new Call();
call.setSOAPMappingRegistry(smr);
call.setTargetObjectURI("urn:AnfrageService");
call.setMethodName("zeigeAlleArtikel");
call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC );
// call aufrufen.
Response resp = null;
try{
URL url = new URL(RPCROUTER);
resp = call.invoke(url, "");
}
catch (SOAPException e){
out.println("Caught SOAPException (" +
e.getFaultCode() + "): " +
e.getMessage());
}
// Antwort überprüfen.
if (!resp.generatedFault()){ // Keine SOAP-Fehler
Parameter results = resp.getReturnValue();
Artikel values = (Artikel)results.getValue();
if (values != null) // Werte wurden zurückgeliefert
out.println(values);
else // Werte wurden nicht geliefert
out.println("Erfolgreiche Anfrage" +
", aber es wurden keine Artikel gefunden");
}
else // Es gibt SOAP-Fehler
{
Fault fault = resp.getFault();
out.println("Generierter Fehler: ");
out.println ("Fehler-Code = " + fault.getFaultCode());
out.println ("Fehler-Text = " + fault.getFaultString());
}
</pre>
Haman
Comment