我用axis开发客户端调用web service,遇到一个非常奇怪的问题:
如果用命令行运行,没有问题,可以正确调用,用抓包工具检查可以看到HTTP/XML请求和响应
如果在eclipse里面单步调试,总是出错,检查网络包,发现根本没有请求发送到server有什么可能的原因么?
谢谢!

解决方案 »

  1.   

    server应该是部署正确的,用VMS之类的测试工具可以正常访问web service API
    命令行允许客户端程序也没问题如果在eclipse里面单步,下面的代码会出现问题:
            org.apache.axis.client.Call _call = createCall();
            _call.setOperation(_operations[1]);
            _call.setUseSOAPAction(true);
            _call.setSOAPActionURI("http://10.64.37.171/VerifyManageString");
            _call.setEncodingStyle(null);
            _call.setProperty(org.apache.axis.client.Call.SEND_TYPE_ATTR, Boolean.FALSE);
            _call.setProperty(org.apache.axis.AxisEngine.PROP_DOMULTIREFS, Boolean.FALSE);
            _call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP11_CONSTANTS);
            _call.setOperationName(new javax.xml.namespace.QName("http://10.64.37.171/", "VerifyManageString"));        setRequestHeaders(_call);
            setAttachments(_call);
     try {        java.lang.Object _resp = _call.invoke(new java.lang.Object[] {agentID, authStr});        if (_resp instanceof java.rmi.RemoteException) {
                throw (java.rmi.RemoteException)_resp;
            }
            else {
                extractAttachments(_call);
                java.util.Map _output;
                _output = _call.getOutputParams();
                try {
                       verifyManageStringResult.value = ((java.lang.Integer) _output.get(new javax.xml.namespace.QName("http://10.64.37.171/", "VerifyManageStringResult"))).intValue();
                } catch (java.lang.Exception _exception) {
                      verifyManageStringResult.value = ((java.lang.Integer) org.apache.axis.utils.JavaUtils.convert(_output.get(new javax.xml.namespace.QName("http://10.64.37.171/", "VerifyManageStringResult")), int.class)).intValue();
                }
    红色部分结果为null,结果抛出NullPointerException.