假设我正在为一个已知的,基于WSDL的Web服务开发客户端(其源代码不可用):
我是否可以根据该WSDL中的内联架构验证各种字段(例如字符串长度不超过限制),运行时?
如果是这样,我如何与该Web服务交互以获取其内联XSD信息?
答案 0 :(得分:2)
如果你想让它真正动态,你必须假设你可以访问WSDL的URI,以及WSDL可能使用的所有其他外部引用,以及其他WSDL文件和/或XSD文件。 / p>
第一步,您必须将文件下载到临时文件夹,或者为内存加载创建这些URI的I / O流,以加载模式(javax.xml.validation.Schema)。我不知道Java API会使这个任务变得容易(从WSDL引用中获取一个模式,比如.NET平台上的开发人员可以使用的模板) - 希望如果有的话,有人可能会插入。否则,它写一个不应该那么难。
我必须提醒您,许多人可能会考虑这一点(加载外部URI,特别是指向Internet的一个)作为生产环境中的安全问题,因此请谨慎使用您的设计。既然你说“一个已知的,基于WSDL的Web服务”,我可能会在设计时获取XSD,并将它们作为资源捆绑在我的Jar文件中,这些资源将与客户端代码一起使用。
接下来就是如何创建XML ...假设您正在使用诸如JAXB之类的东西,那么诸如this one之类的帖子将提供如何解决您的问题的想法,以及究竟是什么你需要验证吗?如果您没有使用JAXB,那么请探索您的API正在做什么,以及它实际上如何允许您插入验证......
我希望这至少可以让您了解在此类问题中需要具备的详细信息,以获得更具体的答案。