在RPC SOAP客户端

时间:2016-10-24 14:04:13

标签: java web-services soap casting xml-rpc

尝试关注一些在线示例,因为我需要在Web服务客户端上进行基本身份验证。

我使用wsimport生成项目的存根类,并尝试使用javax.xml.rpc.stub类传递身份验证凭据,但是转换代理类会抛出java.lang.ClassCastException:

  

com.sun.proxy。$ Proxy29无法强制转换为javax.xml.rpc.Stub。

如果我做错了,请任何人都可以查看此代码并指出我正确的方向。

public class WebClientTester
{

    public static void main(String[] args)
    {
        doNameEnquiry("XXXXXXXXX");
    }

    public static void doNameEnquiry(String acct)
    {

        boolean txnOk = false;
        try
        {

            String str = "http://XXX.XXX.XXX.XXX/GwHolderService.svc?wsdl";
            URL url = new URL(str.substring(0, str.indexOf("?")));
            QName qname = new QName("http://tempuri.org/", "GwHolderService");

            Service service = Service.create(url, qname);

            SInfoHolder port = (SInfoHolder) service.getPort(SInfoHolder.class);

            ((javax.xml.rpc.Stub) port)._setProperty(javax.xml.rpc.Stub.USERNAME_PROPERTY, "myUser");
            ((javax.xml.rpc.Stub) port)._setProperty(javax.xml.rpc.Stub.PASSWORD_PROPERTY, "myPwd");

            InfoHolderRequest request = new InfoHolderRequest();
            request.setHolderAccountNumber(acct);
            InfoHolderResponse response = port.infoHolder(request);

            // System.out.println("authenticated: "+
            // response.getRespMessageCode());
            System.out.println("******************END RESPONSE***********");
            System.out.println("responseCode: " + response.getCoderesp());
            System.out.println(processResponseXML(response));
            System.out.println("******************LIST DETAILS***********");
            listDetails(processResponseXML(response));
        }
        catch (Exception ex)
        {
            ex.printStackTrace();
        }

        // return txnOk;
    }

}

0 个答案:

没有答案