Domanda

Ricevo il seguente errore quando arrivo alla riga che richiama un servizio web DAVVERO BASE che ho in esecuzione su Tomcat / Axis.

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

Ho sbagliato qualcosa con QName? - Non riesco nemmeno a trovare alcuna informazione utile al riguardo.

Il mio codice cliente è di seguito:

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());
        }
    }
}

Il mio codice di serivce web è davvero semplice - solo una semplice classe che restituisce la tua stringa di input con un po 'di testo di concat:

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

    }
È stato utile?

Soluzione

Come dice l'eccezione, si chiama il costruttore QName in modo errato:

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

non è corretto. Penso che devi passare due stringhe, una contenente lo spazio dei nomi, una il nome locale. La documentazione conterrà in genere una descrizione su come utilizzare quella classe.

Altri suggerimenti

Potrebbe essere un refuso nel tuo QName ?:

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

anziché:

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

Dovresti usare uno di questi:

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

ma     nuovo QName (" http://testPackage.fc.com/ , doBasicStuff ") è errato, poiché entrambi i valori sono nella stessa stringa " .., .. "

Saluti

nuovo QName (" soapenc: string " ;, " doBasicStuff ")

Basta digitare il nome del metodo che dovrebbe essere nel tuo caso call.setOperationName (" doBasicStuff ");

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top