Webサービス用のシンプルなJavaクライアントコード-QNameと関係があるのですか?

StackOverflow https://stackoverflow.com/questions/201476

  •  03-07-2019
  •  | 
  •  

質問

Tomcat / Axisで実行している本当に基本的な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());
        }
    }
}

私のウェブサービスのコードは本当に基本的なものです-ちょっとした連結テキストで入力文字列を返す単純なクラス:

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

    }
役に立ちましたか?

解決

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

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

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

他のヒント

QNameのタイプミスか?:

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

代わりに:

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

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

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

しかし     new QName(" http://testPackage.fc.com/ 、doBasicStuff") 両方の値が同じ文字列" ..、.."にあるため、間違っています

よろしく

新しいQName(" soapenc:string&quot ;," doBasicStuff")

場合に応じて、metodの名前を入力してください call.setOperationName(" doBasicStuff");

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top