WSDL中的xmlns不正确

时间:2013-01-14 16:59:56

标签: soap soapui xml-namespaces

我正在尝试将WSDL导入到SOAP-UI项目中 - 这是一个用于测试SOAP调用的简单工具。当我尝试导入wsdl时,我收到以下错误:

  

WSDLException(在/ wsdl:definitions / portType / wsdl:operation [1] / wsdl:input):   faultCode = UNBOUND_PREFIX:无法确定'nrns的命名空间:getDynamicsUploadQueueRequest

从检查WSDL我发现定义区域下没有xmlns:nrns声明。我在一个论坛中读到我可以将WSDL重新保存到磁盘并更正WSDL。但是,我是一个极端的SOAP菜鸟,我不知道该定义应该是什么。我认为,如果我只是将以下内容添加到定义区域,它应该解决问题。有人知道我会用这些问号代替吗?我的方法完全错了吗?

xmlns:nrns="???"

我不拥有或无法控制WSDL。下面是WSDL和XML供参考。

https://apps.net-results.com/soap/v1/NRAPI.wsdl

<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions name='NRAPI' targetNamespace='https://apps.net-results.com/soap/v1'
                  xmlns:nrtypens="https://apps.net-results.com/soap/v1/NRAPI.xsd"
                  xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/'
                  xmlns:xsd='http://www.w3.org/2001/XMLSchema'
                  xmlns:soapenc='http://schemas.xmlsoap.org/soap/encoding/'
                  xmlns:wsdl='http://schemas.xmlsoap.org/wsdl/'
                  xmlns='http://schemas.xmlsoap.org/wsdl/'>

2 个答案:

答案 0 :(得分:3)

这是WSDL中的错误。似乎“nrns”意味着https://apps.net-results.com/soap/v1。请注意,这是targetNamespace元素中的WSDL的definitions

所以只需添加

xmlns:nrns='https://apps.net-results.com/soap/v1'

definitions元素中,你应该没问题。

答案 1 :(得分:1)

命名空间是一种将元素关联到特定类型以避免名称冲突的方法。请参阅此处http://www.w3schools.com/xml/xml_namespaces.asp

你几乎可以???,这应该可以解决你的问题。它不一定是任何有效的URL,因为它永远不会在互联网上使用该URL并检查其有效性。

但是,我建议您从其所有者处获得更正后的WSDL,并在以后使用其他内容时,您可能会遇到有关名称空间不匹配的问题,从而浪费大量时间。暂时继续您的测试,您可能会在<wsdl:definition>标记中添加任何内容,例如:

xmlns:nrns="http://fakeurl.com"

P.S。玩你的想象力:))