如何从动态客户端Web服务获取参数类型

时间:2013-12-24 13:40:07

标签: java web-services soap cxf soap-client

我想从动态客户端Web服务中获取参数类型,但我不能。我写了这段代码:

JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
Client client = dcf
        .createClient("http://localhost:8081/Isle/wsdl/IslemTopCarpBolCik.wsdl");

Object[] res;
try {
    res = client.invoke("toplama", 2, 3);
    System.out.println("Echo response: " + res[0]);

    Binding binding = client.getEndpoint().getBinding();
    BindingInfo bindingInfo = binding.getBindingInfo();

                 //binding.getInInterceptors();

    Collection<BindingOperationInfo> operations = bindingInfo
            .getOperations();


    for (BindingOperationInfo boi : operations) {
        OperationInfo oi = boi.getOperationInfo();
        BindingMessageInfo inputMessageInfo = boi.getInput();
        List<MessagePartInfo> parts = inputMessageInfo
                .getMessageParts();
        System.out.println("function name: "
                + oi.getName().getLocalPart());

    }
    System.out.println("binding: " + binding);

} catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

如何获取参数类型? (p.s.我不想让参数解析。)

我想知道你知道有一个定义的函数来获取参数的类型吗?

1 个答案:

答案 0 :(得分:0)

这段代码对我有用..

        Binding binding = client.getEndpoint().getBinding();
        BindingInfo bindingInfo = binding.getBindingInfo();

        Collection<BindingOperationInfo> operations = bindingInfo
                .getOperations();

        for (BindingOperationInfo boi : operations) {
            BindingMessageInfo inputMessageInfo = boi.getInput();
            List<MessagePartInfo> parts = inputMessageInfo
                    .getMessageParts();

            System.out.println("method name: "
                    + parts.get(0).getConcreteName().getLocalPart());

            for (Field param : parts.get(0).getTypeClass()
                    .getDeclaredFields()) {
                System.out.println("param_name: " + param.getName()
                        + " type:" + param.getType());
            }

        }