Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中使用通用xml soap Web服务而不使用wsimport_Java_Web Services_Soap_Wsdl - Fatal编程技术网

在Java中使用通用xml soap Web服务而不使用wsimport

在Java中使用通用xml soap Web服务而不使用wsimport,java,web-services,soap,wsdl,Java,Web Services,Soap,Wsdl,我正在寻找一种不使用wsimport和类似工具而使用soap Web服务的方法。到目前为止,我发现的每一件事都需要生成wsdl工件,我想避免它,因为我不知道将使用哪个Web服务 这个想法是让用户可以添加几个WSDL的url/方法,程序使用它们并将其响应发送到另一个url 我不是在寻找现成的解决方案/代码或类似的东西。 我需要的是知道这是否可能,以及如何解决这个问题、想法和诸如此类的事情 谢谢 SOAP要求客户机和服务器之间签订合同。合同规定,客户机将给出一个XML为XYZ格式的请求,服务器将给出

我正在寻找一种不使用wsimport和类似工具而使用soap Web服务的方法。到目前为止,我发现的每一件事都需要生成wsdl工件,我想避免它,因为我不知道将使用哪个Web服务

这个想法是让用户可以添加几个WSDL的url/方法,程序使用它们并将其响应发送到另一个url

我不是在寻找现成的解决方案/代码或类似的东西。 我需要的是知道这是否可能,以及如何解决这个问题、想法和诸如此类的事情


谢谢

SOAP要求客户机和服务器之间签订合同。合同规定,客户机将给出一个XML为XYZ格式的请求,服务器将给出ABC格式的响应。没有这个,SOAP就不能工作。这就是WSDL中定义的内容。所以我们必须使用WSDL

wsimport、wsdl4j等工具将这些WSDL文件转换为对象层次结构,并为您准备一个JAXB包装器,让您的生活变得轻松

现在,如果您不想使用自动将WSDL转换为javabean或类似的工具,请注意SOAP只基于XML。如果您知道如何用java解析XML,那就差不多了。您可以使用JAX解析器来实现这一点,并且可以读取SOAP请求和响应中的所有内容

您将面临的问题是,随着SOAP XML复杂性的增长,您将很难正确解析XML,正确识别节点、值和关系。此外,如果没有适当的对象层次结构,则无法在相隔一定距离的节点之间建立关联。也就是说,从第100行开始,除非您开始维护自己的对象、关系等,否则您无法返回并关联第10行节点(我想这不是您想要的)


使用JavaBean可以维护对象层次结构,因此您可以轻松地在不同节点的不同对象之间关联它们。但是JAXB相对来说比JAX慢。

SOAP并没有什么神奇之处,它只是通过某种通信协议(通常是HTTP)发送的XML。从技术上讲,您只需要TCP套接字就可以了。在运行时使用wsimport并导入生成的类会像您说的那样解析整个XML,这会很麻烦吗?问题是我不知道将使用什么样的WSDl,所以我无法预先解析它们。因此,手动解析并希望没有太多复杂的对象是解决方案?谢谢你的时间!这将是因为您需要为每个soap调用获取wsdl。如果Web服务必须是动态的,REST是一种更好的方法。REST和json是我的首选。问题是客户端不支持它。只有SOAP WSDL。再次感谢您的时间!为什么不使用模式验证器在运行时检查它是哪个WSDL,然后根据它使用单独的解析机制呢。只是一个想法。没问题,伙计,这是我的荣幸