天天看点

【webservice】如何远程调用Websevice服务

【浏览器作为客户端】

利用ajax,但是要提前组合soap信封字符串,可以使用工具soapui,自动生成soap信封,在问号处填补参数。

【webservice】如何远程调用Websevice服务

【java写客户端】

法一:【远程调用,不必生成本地客户端代码】利用axis,代码如下:

//获取请求参数
            String jobID = soapReq. getString( "jobID");
            if (jobID ==null|| jobID. length() == ) return succeed;

            Object[]paramsObj = new Object[];
           paramsObj [ ] = jobID ;

            try {
                 Service service = new Service() ;
                 Call call;
                call = (Call)service. createCall() ;
                call .setTargetEndpointAddress (new URL(TARGET_URL ));
                call .setOperation (operation );
                call .addParameter (new QName( namespace,
                            "jobID"), XMLType .XSD_STRING, ParameterMode.IN );

                call .setReturnType (XMLType.XSD_STRING) ;

                 String returnResult = (String) call.invoke( NAMESPACE,operation ,paramsObj ); //执行
                 if( !returnResult .equals ("0" )) return succeed;//执行错误
                succeed = true; resultObj. put( "result", succeed );
           

期间发生过一次错误: 无效的编码名称 “utf-8; action=”“”,原因是客户端生成的http请求头不能被服务端识别,将依赖远程axis后,问题解决(之前是axis2);

法二:【使用wsimport,利用wsdl生成客户端代码,在本地调用】。

命令

出现了错误

【webservice】如何远程调用Websevice服务

原因在wsdl中,

【webservice】如何远程调用Websevice服务

,使用的address为localhost,所以连接不上。(service是远程地址的绑定)解决办法是如下代码:

【webservice】如何远程调用Websevice服务

继续阅读