日期:2014-05-17  浏览次数:20621 次

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="f