Java Web服务客户端(Jaxb Soap调用)

Java Web服务客户端(Jaxb Soap调用),java,xml,web-services,soap,jaxb,Java,Xml,Web Services,Soap,Jaxb,我不明白为什么制作一个简单的web服务客户端几乎成了一门科学,在某处发布soap xml并接收结果 目标很简单: -将POJO(jax ws注释对象)编组为Soap XML -将Soap XML发送到服务端点 -接收soapxml响应 -将Soap XML解组为POJO 我没有找到任何干净的java内置解决方案: -SOAPMessage不处理编组 -JAXB在名称空间方面存在问题(如果pojo注释中没有严格定义) -使用ws-import为简单调用生成大量文件 尽管我制作了自己的soapcli

我不明白为什么制作一个简单的web服务客户端几乎成了一门科学,在某处发布soap xml并接收结果

目标很简单: -将POJO(jax ws注释对象)编组为Soap XML -将Soap XML发送到服务端点 -接收soapxml响应 -将Soap XML解组为POJO

我没有找到任何干净的java内置解决方案: -SOAPMessage不处理编组 -JAXB在名称空间方面存在问题(如果pojo注释中没有严格定义) -使用ws-import为简单调用生成大量文件

尽管我制作了自己的soapclient来实现这一点(在响应时使用名称空间和前缀对一些SAX节点进行黑客攻击),并使用Http(s)UrlConnection发送请求,但我相信也有一些干净的解决方案可以做到这一点(实际上没有WSDL)


有什么建议(不需要第三方库)?

听起来您可能有一些问题。XML节点(由XML模式支持)有两部分:本地名称和名称空间,因此需要提供与此匹配的JAXB映射。我写的以下文章可能会帮你解决这一部分:问题是我有可能调用另一个web服务的web服务。调用方web服务具有不同的名称空间(因此具有自己的包信息类。我无法告诉jaxb marshaller使用哪个名称空间。更具体地说:WebService A:(名称空间是)方法AResult=AMethod(AParam)WebService B:(名称空间是)-创建AParam pojo-使用Jaxb将AParam封送到xml中-调用ServiceA.MethodA-将xml解组到AResult中