当前位置: 代码迷 >> Java Web开发 >> webservice 联调有关问题,200分
  详细解决方案

webservice 联调有关问题,200分

热度:114   发布时间:2016-04-17 09:59:31.0
webservice 联调问题,急200分求助
我用下面这个调用一个webservice,但这个webservice是调用dcn网的一个webservice,我现在要在公网调用我自己的这个webservice ,报了异常:
Java code
/**     * 调用webservice     *      * @param url     *            URL地址     * @param method     *            调用的方法名称     * @param paramName     *            传递的参数名称     * @param param     *            传递的参数     * @return 未解析的XML字符串     */    @Override    public String callWebService(String url, String method, String paramName, String param)    {        String resultStr = null;        logger.info("调用webservice 参数为:param=" + param);        try        {            Service service = new Service();            Call call = (Call) service.createCall();            call.setTargetEndpointAddress(new java.net.URL(url));            // 设置要调用哪个方法            //call.setOperationName(method);            call.setOperationName(new QName("http://testspeed.com",method));            // 设置要传递的参数            call.addParameter(new QName("http://testspeed.com",paramName), XMLType.XSD_STRING, ParameterMode.IN);            // 要返回的数据类型(自定义类型)            call.setReturnType(XMLType.XSD_STRING);// (标准的类型)            //call.setUseSOAPAction(true);            //call.setSOAPActionURI(method);            // 调用方法并传递参数            String result = (String) call.invoke(new Object[] { param });            if (logger.isDebugEnabled())            {                logger.debug("调用webservice 返回结果为:" + result);            }        }        catch (MalformedURLException e)        {}        catch (ServiceException e)        {}        catch (RemoteException e)        {}        return resultStr;    }

java 代码
Java code
/**     * 根据客户端IP获得用户账号     *      * @param param     *            XML格式的参数     * @return 未解析的XML报文     */    public String getAccessNum(String param)    {        // url        String url = "http://25.24.29.18:8190/obs-auth/webservice/OBSInterfaceForAuth?wsdl";        // 要调用方法        String method = "AuthIP";        // 参数名称        String paramName = "AuthIPRequest";        // 请求webservice        String result = callWebService(url, method, paramName, param);        return result;    }    /**     * 调用webservice     *      * @param url     *            URL地址     * @param method     *            调用的方法名称     * @param paramName     *            传递的参数名称     * @param param     *            传递的参数     * @return 未解析的XML字符串     */    private String callWebService(String url, String method, String paramName,            String param)    {        String resultStr = null;        try        {            Service service = new Service();            Call call = (Call) service.createCall();            call.setTargetEndpointAddress(new java.net.URL(url));            // 设置要调用哪个方法            call.setOperationName(method);            // 设置要传递的参数            call.addParameter(paramName, XMLType.XSD_STRING, ParameterMode.IN);            // 要返回的数据类型(自定义类型)            call.setReturnType(XMLType.XSD_STRING);// (标准的类型)            call.setUseSOAPAction(true);            call.setSOAPActionURI(method);            // 调用方法并传递参数            resultStr = (String) call.invoke(new Object[] { param });        }        catch (MalformedURLException e)        {}        catch (ServiceException e)        {}        catch (RemoteException e)        {}        return resultStr;    }

services.xml
XML code
<?xml version="1.0" encoding="UTF-8"?><service name="fromCRM/user/CallUser">    <description>        TestSpeed CallUser      </description>    <parameter name="ServiceClass">        com.testspeed.CallUser    </parameter>    <operation name="getAccessNum">        <messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />    </operation>    <operation name="getUserMess">        <messageReceiver class="org.apache.axis2.rpc.receivers.RPCMessageReceiver" />    </operation></service>
  相关解决方案