关于java调用.net webserivce出现: 服务器无法处理请求。 --> 未将对象引用设置到对象的实例...

今天花了2个小时处理这个异常,使用了axis及soap方式都有问题,真的很奇怪,为什么都出现这种问题,基本上判断是.net服务器端出现问题,但是.net自己调用自己又没出现这个问题,最后的解决方案是将.net服务器端的namespace改成自己的,不使用默认的http://tempuri.org/,问题一下字解决了,我把我的代码出来,大家参考下,看了网上没有好的帖子说这方面的解决方案.

java 代码
java 代码
  1. package com.gztelecom.util;   
  2. import javax.xml.namespace.QName;    
  3. import org.apache.axis.client.*;   
  4.   
  5. public class WebServiceForCpOperate   
  6. {   
  7.     private final static String endpoint = "http://***.com/service/DzChkService.asmx";    
  8.   
  9.     public static boolean isValidCoupon(String couponid)   
  10.     {    
  11.       try    
  12.       {    
  13.        
  14.         Service service = new Service();    
  15.         Call call = (Call) service.createCall();    
  16.         call.setTargetEndpointAddress(new java.net.URL(endpoint));    
  17.        
  18.         call.setUseSOAPAction(true);    
  19.         call.setSOAPActionURI("http://***.com/service");    
  20.        
  21.         call.setOperation("CouponValidateSMS");    
  22.         call.setOperationName(new QName("http://***.com/service",    
  23.               "CouponValidateSMS"));    
  24.        
  25.           call.addParameter("couponid",    
  26.               org.apache.axis.Constants.XSD_STRING,    
  27.               javax.xml.rpc.ParameterMode.IN);    
  28.        
  29.           call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);    
  30.        
  31.           String k = (String) call.invoke(new Object[] { couponid });   
  32.            
  33.           if(k == null || k.trim().equals("null") || k.trim().length()<=0)   
  34.              return false;   
  35.              
  36.           //System.out.println(call.getResponseMessage().getSOAPPartAsString());   
  37.           return true;   
  38.         }    
  39.         catch (Exception ex)    
  40.         {    
  41.           ex.printStackTrace();    
  42.         }    
  43.         return false;   
  44.   }    
  45.   public static void main(String[] args)   
  46.   {   
  47.       System.out.println(isValidCoupon("142"));   
  48.   }   
  49. }   

你可能感兴趣的:(综合项目)