`
netfly
  • 浏览: 114660 次
  • 性别: 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协议,为什么需要你自己去转化呢?

相关推荐

    2001_Programming Web Services with XML-RPC

    《2001_Programming Web Services with XML-RPC》是一本关于基于XML-RPC技术进行Web服务编程的书籍。该书由Simon St. Laurent、Joe Johnston和Edd Dumbill合著,并于2001年6月由O'Reilly出版社出版。本书共有230页,...

    c#操作XML 读取、生成,WEBSERVICE接口

    要调用Web Service并传递XML数据,可以使用`SoapHttpClientProtocol`类的派生类。以下代码展示了如何调用上面创建的Web Service接口: ```csharp using System.Net; using System.IO; using System.Xml; ...

    WebServices服务接口调用---用ducument方式应用

    标题中的“WebServices服务接口调用---用document方式应用”指的是使用XML文档作为消息交换格式来调用Web服务接口的一种方法。 在Web服务中,有两种主要的消息交换模式:RPC(Remote Procedure Call)风格和...

    调用webservice,通过post传参读取返回的XML

    4. **调用WebService**:在.NET环境中,可以通过`System.Web.Services.Protocols.SoapHttpClientProtocol`类或者更简单的Web Reference(在.NET Framework 4.0之后被WCF取代)来调用WebService。这里提到的`Ajax....

    c#动态调用Webservices 不用VS生成 简单快捷

    4. **XML和SOAP协议理解**:由于WebServices通常基于XML和SOAP协议进行通信,因此对这些协议的理解也是不可或缺的。正确解析和构造XML/SOAP请求及响应,是动态调用成功的关键之一。 ### 总结 通过本文的探讨,我们...

    拼接xml调用webservice

    在.NET环境中,有XmlDocument、XmlNode等类来处理XML。 5. **调用Web Service**:完成XML拼接后,客户端需要通过HTTP(POST请求)将XML发送到Web Service的URL。这通常可以通过HTTP客户端库实现,如Java的...

    Java XML和Web服务宝典

    SOAP是基于XML的消息传递协议,用于在Web上交换结构化的信息。WSDL是定义Web服务接口的XML格式,描述了服务的位置、使用的消息协议以及提供的操作。UDDI是一种目录服务,用于发布和查找Web服务。 Java中实现Web服务...

    基于SOAP的Web-Services开发的关键技术_SOAP的Web-Services_Web-Services开发_

    2. **WSDL(Web Services Description Language)**:WSDL是一种XML格式,用于定义Web服务的接口,包括服务的位置、操作方法、输入和输出消息的结构等。开发者可以使用WSDL文档来描述SOAP消息的结构和调用方式,使得...

    Web Services with SOAP.

    Web服务是一种基于网络的、平台无关的交互方式,它允许不同的系统...O'Reilly的"Programming Web Services with SOAP"可能涵盖了这些主题的深入讨论,包括实践示例和最佳实践,帮助读者掌握SOAP Web服务的开发和应用。

    用XML轻松开发WEB站点

    在Web服务领域,WSDL(Web Services Description Language)使用XML来定义服务接口,包括其操作、消息格式以及如何调用这些服务。这样,不同平台和语言的系统可以通过SOAP和XML进行通信,实现跨平台的数据交换。 ...

    用xml轻松开发Web网站

    此外,XML还与SOAP(Simple Object Access Protocol)和RESTful Web Services紧密相关。SOAP是一种基于XML的消息传递协议,常用于分布式系统间的通信。而REST(Representational State Transfer)是一种轻量级的架构...

    如何通过PL/SQL访问到Web Services

    在IT领域,Web Services是一种基于互联网的标准,允许应用程序之间交换数据和服务。随着Web Services的广泛应用,Oracle也提供了相应的技术支持,让开发人员能够通过PL/SQL直接调用Web Services。这篇文章主要探讨...

    The Java Web Services Tutorial

    Java平台提供了丰富的APIs来支持XML的处理,包括JAXP(Java API for XML Processing)、SAX(Simple API for XML)、DOM(Document Object Model)以及XSLT(Extensible Stylesheet Language Transformations)等,...

    用XML轻松开发WEB网站

    XML还被广泛用于Web服务,如SOAP(Simple Object Access Protocol)和RESTful服务,它们通过XML消息传递数据。SOAP基于WSDL(Web Services Description Language)定义服务接口,而RESTful服务则依赖于HTTP协议,...

    ASP.NET XML with C# 源代码

    ASP.NET提供了System.Xml命名空间,包含了大量处理XML文档的类,如XmlDocument、XmlNode、XmlElement等。这些类允许开发者创建、读取、修改和保存XML文档。例如,使用XmlDocument类可以加载XML文件,通过SelectNodes...

    ASP.NET_XML和Web_Service

    - 常用类包括但不限于`XmlDocument`, `XmlElement`, `XmlNode`等。 #### 6. Web Service - **定义**: Web Service是一种通过网络提供服务的技术,允许不同的应用程序之间进行通信。 - **特点**: - 跨平台: 不同...

    JAVA调用webservice并解析xml

    在Java中,我们通常使用Apache CXF或JAX-WS(Java API for XML Web Services)框架来创建和调用Web服务。以下是一个简单的步骤概览: 1. **添加依赖**:首先,确保你的项目包含相应的库,如Apache CXF或JAX-WS的JAR...

    xml学习手册 xml学习资料

    在Web服务中,SOAP(Simple Object Access Protocol)和WSDL(Web Services Description Language)常常与XML一起使用。SOAP是一种基于XML的消息协议,用于在不同应用之间传递信息;WSDL是XML格式的文件,描述了Web...

Global site tag (gtag.js) - Google Analytics