Frage

Ich erhalte die folgende Fehlermeldung, wenn ich auf die Linie erhalten, die einen wirklich grundlegenden Web-Service aufruft ich auf Tomcat / Achse ausgeführt habe.

Element or attribute do not match QName production: QName::=(NCName':')?NCName

Habe ich etwas falsch mit QName -. Ich nicht einmal alle nützlichen Informationen über sie finden

Ihr Client-Code ist unter:

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

    public class TestClient {

    public static void main(String [] args)
    {
        try{
            String endpoint = "http://localhost:8080/TestWebService/services/DoesMagic";  

            Service service = new Service();
            Call call = (Call) service.createCall();

            call.setTargetEndpointAddress( new java.net.URL(endpoint) );
            call.setOperationName( new QName("http://testPackage.fc.com/, doBasicStuff") );

            String ret = (String) call.invoke( new Object[] {"some kind of message"} );

            System.out.println(ret);

        }catch(Exception e){
            System.err.println(e.toString());
        }
    }
}

Mein Code Web-Serivce ist wirklich einfach - nur eine einfache Klasse, die mit einem wenig concat Text Ihres Eingabestring zurückzugibt:

public String doBasicStuff(String message)
    {
        return "This is your message: " + message;

    }
War es hilfreich?

Lösung

Wie die Ausnahme, sagt, Sie rufen Sie den QName-Konstruktor falsch:

new QName("http://testPackage.fc.com/, doBasicStuff")

ist falsch. Ich glaube, Sie zwei Strings übergeben haben, ein den Namespace enthalten, eine des lokalen Namen. Die Dokumentation wird in der Regel eine Beschreibung darüber enthalten, wie diese Klasse verwenden.

Andere Tipps

Könnte es ein Tippfehler in Ihrem QName sein:

new QName("http://testPackage.fc.com/", "doBasicStuff")

statt:

new QName("http://testPackage.fc.com/, doBasicStuff")

Sie sollten eine dieser verwenden:

public QName(String localPart)     or
public QName(final String namespaceURI, final String localPart)

aber     neue QName ( " http://testPackage.fc.com/ , doBasicStuff") da ist falsch, beiden Werte in der gleichen Zeichenfolge „.., ..“

sind

Viele Grüße

neue QName ( "soapenc: string", "doBasicStuff")

Geben Sie einfach den Namen der Methode, die auf Ihrem Fall muss es wäre call.setOperationName("doBasicStuff");

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top