Webサービス用のシンプルなJavaクライアントコード-QNameと関係があるのですか?
-
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");
所属していません StackOverflow