web service怎样使用定制的xml格式传送数据? 400 报错
项目需要从另外一个系统同步基础数据,我目前用axis1.4作为web service引擎,但是对方系统的技术员说传送数据的XML格式不符合要求,并提供以下xml传送样式:
样式一:
请求消息:
<Request> <BookedInfos> <BookedInfo> <OrdRowID>15239_4</OrdRowID> <ResourceCode>A34</ResourceCode> <Resource>彩超一号机器</Resource> <BookedDate>2009-03-23</BookedDate> <BookedTime>13:49:59</BookedTime> <BookedAddress>超生诊断科</ BookedAddress > <OperatorCode>demo</OperatorCode> <Operator>demo</Operator> <NoteInfo>患者有心脏病史</NoteInfo> <OtherInfo>无</OtherInfo> </BookedInfo> </BookedInfos> </Request>
应答消息:
<Response> <ResultCode>0</ResultCode> <ResultContent>成功</ResultContent> </Response>
样式二:
请求消息:
<Request> <CardNo>100000220002</CardNo> <CardType></ CardType > </Request>
应答消息:
<Request> <ResultCode>0</ResultCode> <ResultContent>发送成功</ResultContent> <PatInfos> <PatInfo> <RegNo></RegNo> <DocumentID></DocumentID> <PatName></ PatName > <Age></ Age> <Sex></Sex> <CardID></CardID> <Telephone></Telephone> <Address></ Address> <Nation></Nation> </PatInfo> </PatInfos> </Request>针对这种 XML 传送格式, axis1.4 是否能实现。如不能实现请问有什么方法可以实现?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在使用Axis 1.4作为Web Service引擎时,确实可以实现自定义XML格式的数据传输。为了满足对方系统提供的XML样式要求,你可以通过以下几种方式来定制你的Web Service接口以适应这些特定的XML结构:
Axis允许你通过扩展其基本功能来自定义SOAP消息的内容和结构。你可以创建一个自定义的Handler(处理器)来修改请求和响应的SOAP消息,使其符合对方提供的XML样式。
org.apache.axis.handlers.BasicHandler
类,并重写handleRequestMessage
和handleResponseMessage
方法,以便在发送前和接收后修改SOAP消息。server-config.wsdd
或通过代码动态部署服务时,将此自定义Handler添加到处理链中。org.apache.axis.encoding.Serializer
和org.apache.axis.encoding.Deserializer
接口),以控制如何将Java对象转换为特定的XML格式及反之亦然。如果Axis 1.4难以直接满足需求,或者上述方法实施起来过于复杂,也可以考虑使用更现代、灵活的Web Service或RESTful服务框架,比如Apache CXF、Spring Web Services (SWT) 或者直接构建REST API,这些框架通常提供了更加便捷的方式来处理自定义数据格式。
对于样式一和样式二这样的简单XML结构,使用JAX-WS(Java API for XML Web Services)或JAX-RS(Java API for RESTful Web Services)可能会更加直接和高效,特别是如果你对SOAP协议没有硬性要求的话。
如果只是简单的XML交换,不涉及复杂的Web Service规范,甚至可以考虑不使用Web Service框架,而是直接使用像JAXB(Java Architecture for XML Binding)或DOM/SAX/StAX等XML处理库来生成和解析XML,然后通过HTTP客户端(如Apache HttpClient)进行数据传输。
综上所述,虽然Axis 1.4本身可能需要一些定制工作来完全匹配给定的XML格式,但通过上述方法之一,你应该能够实现所需的功能。考虑到技术的演进,评估是否迁移到更现代的技术栈也是一个值得考虑的选项。