这是错误AxisFault
 faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
 faultSubcode: 
 faultString: java.lang.NullPointerException
 faultActor: 
 faultNode: 
 faultDetail: 
{http://xml.apache.org/axis/}hostname:noter
java.lang.NullPointerException
at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222)
at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:129)
at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:633)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanEndElement(XMLNSDocumentScannerImpl.java:719)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1685)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:368)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:834)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:148)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1242)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:375)
at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696)
at org.apache.axis.Message.getSOAPEnvelope(Message.java:435)
at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206)
at org.apache.axis.client.Call.invokeEngine(Call.java:2784)
at org.apache.axis.client.Call.invoke(Call.java:2767)
at org.apache.axis.client.Call.invoke(Call.java:2443)
at org.apache.axis.client.Call.invoke(Call.java:2366)
at org.apache.axis.client.Call.invoke(Call.java:1812)
at Test.dotran(Test.java:36)
at Test.main(Test.java:46)这是程序
import java.net.URL;import javax.xml.namespace.QName;
import javax.xml.rpc.ServiceException;import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
public class Test {
String respXML = ""; public void dotran(){
Service service = new Service();
String url = "http://192.192.192.228:9000/jwt01/services/JwtSwitchPort";
try {
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(new URL(url));
            call.setOperationName(new QName(url,"queryDriver"));
            
            call.addParameter("esn", org.apache.axis.encoding.XMLType.XSD_STRING,
     javax.xml.rpc.ParameterMode.IN);
     call.addParameter("dlh", org.apache.axis.encoding.XMLType.XSD_STRING,
     javax.xml.rpc.ParameterMode.IN);
     call.addParameter("zjlx", org.apache.axis.encoding.XMLType.XSD_STRING,
     javax.xml.rpc.ParameterMode.IN);
     call.addParameter("zjbh", org.apache.axis.encoding.XMLType.XSD_STRING,
     javax.xml.rpc.ParameterMode.IN);
     call.addParameter("qydm", org.apache.axis.encoding.XMLType.XSD_STRING,
     javax.xml.rpc.ParameterMode.IN);
    
     call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);
            call.setUseSOAPAction(true);
            call.setSOAPActionURI(url);
            
            respXML= (String) call.invoke(new Object[] {"48019566268","2010060109253068","1","130100007184","h"});
            System.out.println(respXML);
} catch (Exception e) {
e.printStackTrace();
}

}

public static void main(String[] args) {
Test test = new Test();
test.dotran();
}
}

解决方案 »

  1.   

    axis好久以前用的,,差不多忘记了..!  还是帮你看看吧!顺便问下:LZ有JDK1.6的环境吗.? 
      

  2.   


    谢谢 我用的JDK1.5 
      

  3.   

    call.setUseSOAPAction(true);
      call.setSOAPActionURI(url);
    去掉试试
      

  4.   

    空指针,
    别人不了解你的程序逻辑,光凭你贴的这些代码很难找到问题的。同时贴一下你服务端queryDriver方法的代码。
      

  5.   

    空指针的36行是哪一行呢?真不明白,你既然用axis,何必还要写这个套路的代码????
    可以自动生成代码的呀。
      

  6.   

    我最近也在写一个webservice,用Axis
    static String baseendpoint = "http://192.168.10.51:8080/smartSaleWS/services/BaseInfoWebService";


    public static String DepartmentNum(String depId){
    Service service = new Service();
    Call call = null;
    String DepartmentNum = "";
    try {
    call = (Call) service.createCall();
    call.setOperationName(new QName(baseendpoint,"findDepartmentNum"));
    call.setTargetEndpointAddress(new java.net.URL(baseendpoint));

    DepartmentNum = (String)call.invoke(new Object[]{depId}); }catch(Exception ex)
    {
    //ex.printStackTrace();
    logger.error("-->webservice出现异常");

    }
    return DepartmentNum;
    }
    这样的客户端就ok了,没LZ写的那么复杂!
    顺便问一下,楼主确定调用服务端的这个方法返回的是String?
      

  7.   


    respXML= (String) call.invoke(new Object[] {"48019566268","2010060109253068","1","130100007184","h"});