2

Tomcat/Axis で実行している REALLY BASIC Web サービスを呼び出す行に到達すると、次のエラーが発生します。

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

QName に何か問題がありましたか? - それに関する有用な情報さえ見つかりません。

私のクライアントコードは以下の通りです:

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

私の Web サービス コードは非常に基本的なものです。入力文字列を少しの連結テキストで返す単純なクラスです。

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

    }
4

5 に答える 5

7

例外が示すように、QName コンストラクターを間違って呼び出します。

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

間違っています。名前空間を含む文字列とローカル名を含む文字列の 2 つの文字列を渡す必要があると思います。ドキュメントには通常、そのクラスの使用方法に関する説明が含まれています。

于 2008-10-14T14:56:02.993 に答える
6

QName のタイプミスでしょうか?:

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

それ以外の:

new QName("http://testPackage.fc.com/, doBasicStuff")
于 2008-10-14T14:54:36.320 に答える
0

次のいずれかを使用する必要があります。

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

ただし、新しいQName( " http://testPackage.fc.com/、doBasicStuff ")は間違っています。これは、両方の値が同じ文字列 "..、.."に含まれているためです。

よろしく

于 2010-04-13T18:26:25.660 に答える
0

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

于 2011-12-03T15:11:35.910 に答える
0

あなたの場合に必要なメソッドの名前を入力するだけです call.setOperationName("doBasicStuff");

于 2012-12-15T00:07:13.200 に答える