`
netfly
  • 浏览: 114140 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

web services 传递xml document问题

    博客分类:
  • soa
阅读更多
我写了一个java调用.net web services,.net 返回的是一个xml document,我曾经采用axis来自动生成客户端的形式成功调用过,但是axis自动生成的代码可读性奇差,简直惨不忍睹。

所以我想有没有什么简化操作,自己做了点尝试,发现返回类型转换总是不成功,谁能,不胜感激!
import javax.xml.namespace.QName;

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.w3c.dom.Document;

/**
 * @author Liujj
 * Date 2007-1-18 <br>
 * Description: <br>
 * TestUserService
 */
public class TestUserService {
	  /**
	    * @param args
	    */
	  public static void main(String[] args) {
	      // TODO Auto-generated method stub
	      try {
//	        String wsdlUrl = "http://192.168.5.149/Centralism_XH10/webservice/UserService.asmx?op=getUserInfo";
//	        String nameSpaceUri = "http://192.168.5.149/Centralism_XH10/webservice/UserService.asmx";
	        String wsdlUrl = "http://192.168.5.149/Centralism_XH10/webservice/UserService.asmx?op=getUserInfo";
	        String soapActionURI = "http://research.beyondbit.com/Centralism/getUserInfo";
	        
	        // 创建调用对象
	        Service service = new Service();
	        Call call = (Call) service.createCall();
	        
	        // 调用getUserInfo
	        System.out.println(">>>getUserInfo");
	        
	        //xmlns
	        call.setOperationName(new QName("http://research.beyondbit.com/Centralism", "getUserInfo"));
	        call.setTargetEndpointAddress(new java.net.URL(wsdlUrl));
			
	        //parameter & return
	        call.addParameter("ldapStr", org.apache.axis.encoding.XMLType.XSD_STRING,
					javax.xml.rpc.ParameterMode.IN);
			call.addParameter("attrNames", org.apache.axis.encoding.XMLType.XSD_STRING,
					javax.xml.rpc.ParameterMode.IN);
			call.setReturnType(org.apache.axis.encoding.XMLType.XSD_ANY);
			
			//set soap action
			call.setUseSOAPAction(true);
			call.setSOAPActionURI(soapActionURI);
	        

			//call
			String ret = (String) call.invoke(new Object[] { "d61b29051cd534458c0cdd16bdab77aa" , "" });
	        
	        System.out.println("return value is " + ret);
	        
	      } catch (Exception e) {
	        e.printStackTrace();
	      }
	  }

}
分享到:
评论
4 楼 netfly 2007-05-08  
已经解决,就是用自动生成工具产生的代码,提出有用的部分整合到自己的代码中,大部分垃圾代码全部丢失,看起来舒服多了。
3 楼 liusu 2007-01-27  
我也遇到了同样的问题。也是用AXIS的自动生成代码代码才访问成功的。我曾经想过直接用JAXM的API,直接发送和取得soap消息并解析,但是仍然失败。

跟你一样等待有人解决。
2 楼 netfly 2007-01-26  
引用
返回的是xml格式的数据,难道不符合soap协议,为什么需要你自己去转化呢?

拜托能给点有用的建议,我怎么不知道是xml数据!
1 楼 jianfeng008cn 2007-01-23  
netfly 写道
我写了一个java调用.net web services,.net 返回的是一个xml document,我曾经采用axis来自动生成客户端的形式成功调用过,但是axis自动生成的代码可读性奇差,简直惨不忍睹。

所以我想有没有什么简化操作,自己做了点尝试,发现返回类型转换总是不成功,谁能,不胜感激!
import javax.xml.namespace.QName;

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.w3c.dom.Document;

/**
 * @author Liujj
 * Date 2007-1-18 <br>
 * Description: <br>
 * TestUserService
 */
public class TestUserService {
	  /**
	    * @param args
	    */
	  public static void main(String[] args) {
	      // TODO Auto-generated method stub
	      try {
//	        String wsdlUrl = "http://192.168.5.149/Centralism_XH10/webservice/UserService.asmx?op=getUserInfo";
//	        String nameSpaceUri = "http://192.168.5.149/Centralism_XH10/webservice/UserService.asmx";
	        String wsdlUrl = "http://192.168.5.149/Centralism_XH10/webservice/UserService.asmx?op=getUserInfo";
	        String soapActionURI = "http://research.beyondbit.com/Centralism/getUserInfo";
	        
	        // 创建调用对象
	        Service service = new Service();
	        Call call = (Call) service.createCall();
	        
	        // 调用getUserInfo
	        System.out.println(">>>getUserInfo");
	        
	        //xmlns
	        call.setOperationName(new QName("http://research.beyondbit.com/Centralism", "getUserInfo"));
	        call.setTargetEndpointAddress(new java.net.URL(wsdlUrl));
			
	        //parameter & return
	        call.addParameter("ldapStr", org.apache.axis.encoding.XMLType.XSD_STRING,
					javax.xml.rpc.ParameterMode.IN);
			call.addParameter("attrNames", org.apache.axis.encoding.XMLType.XSD_STRING,
					javax.xml.rpc.ParameterMode.IN);
			call.setReturnType(org.apache.axis.encoding.XMLType.XSD_ANY);
			
			//set soap action
			call.setUseSOAPAction(true);
			call.setSOAPActionURI(soapActionURI);
	        

			//call
			String ret = (String) call.invoke(new Object[] { "d61b29051cd534458c0cdd16bdab77aa" , "" });
	        
	        System.out.println("return value is " + ret);
	        
	      } catch (Exception e) {
	        e.printStackTrace();
	      }
	  }

}


返回的是xml格式的数据,难道不符合soap协议,为什么需要你自己去转化呢?

相关推荐

Global site tag (gtag.js) - Google Analytics