有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Web服务的简单java客户端代码与QName有关吗?

当我到达调用我在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;

    }

共 (5) 个答案

  1. # 1 楼答案

    正如异常所说,您错误地调用了QName构造函数:

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

    这是不正确的。我认为必须传递两个字符串,一个包含名称空间,一个包含localname。文档通常会包含关于如何使用该类的描述

  2. # 2 楼答案

    只要在你的案子上输入我的名字就可以了 call.setOperationName("doBasicStuff");

  3. # 3 楼答案

    新的QName(“soapenc:string”、“doBasicStuff”)

  4. # 4 楼答案

    您应该使用以下选项之一:

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

    但是 新的QName(“^a1},doBasicStuff”) 是错误的,因为两个值在同一个字符串中“,…”

    问候

  5. # 5 楼答案

    可能是你的名字有误吗

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

    而不是:

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