我用Axis调用webservice ,报出这样一个错误: faultString: 服务器无法处理请求。 ---> 未将对象引用设置到对象的实例。
详细错误如下:
Exception in thread "main" AxisFault
 faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server
 faultSubcode: 
 faultString: 服务器无法处理请求。 ---> 未将对象引用设置到对象的实例。
 faultActor: 
 faultNode: 
 faultDetail: 
{http://xml.apache.org/axis/}stackTrace:服务器无法处理请求。 ---> 未将对象引用设置到对象的实例。
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)
import java.rmi.RemoteException;import javax.xml.namespace.QName;
import javax.xml.rpc.ServiceException;import org.apache.axis.client.Call;
import org.apache.axis.client.Service;public class Test5 {
public static void main(String[] args) throws ServiceException, RemoteException{
System.getProperties().setProperty("http.proxyHost", "proxy1.bj.petrochina");
System.getProperties().setProperty("http.proxyPort", "8080");
String endPoint = "http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl"; Service service = new Service(); 
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(endPoint);
call.setReturnClass(java.lang.String[].class); 

call.addParameter("theCityName", org.apache.axis.encoding.XMLType.XSD_STRING,
javax.xml.rpc.ParameterMode.IN); call.setOperationName("getWeatherbyCityName");  call.setUseSOAPAction(true); 
call.setSOAPActionURI("http://WebXml.com.cn/getWeatherbyCityName"); String[] results = (String[]) call.invoke(new Object[]{"58367"}); 
for(String res : results){
System.out.println("result:"+res);
}
}}

解决方案 »

  1.   

    http://blog.csdn.net/a1000005a/article/details/4770052
    一定要设置Action.否则服务器无法处理请求,不知道你引用的是哪个方法,所以报出未将对象引用设置到对象的实例
      

  2.   

    call.setTargetEndpointAddress(new java.net.URL("服务地址"));
    call.setOperationName(new QName("命名空间","服务名称"));
      

  3.   

    try{String endPoint = "http://202.102.36.242:8080/CSB/services/ImsService";
    Service service = new Service();
    Call call = (Call)service.createCall();
    call.setTargetEndpointAddress(new java.net.URL(endPoint));
    call.setOperationName(new 
    QName("http://com.linkage.ims","GET_IMS_USER_INFO"));
    String res = (String)call.invoke(new Object[]{"512","68284124"});
    System.out.println("入参:512,68284124, 返回结果:res"+res);
    }catch(Exception e){
    System.out.println("出错:"+e.toString());
    e.printStackTrace();
    }用这个 试试