3

我正在尝试将 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/'>
4

2 回答 2

3

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

所以只需添加

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

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

于 2013-01-15T20:36:36.203 回答
1

命名空间是一种将元素与特定类型相关联以避免名称冲突的方法。参考这里http://www.w3schools.com/xml/xml_namespaces.asp

你几乎可以???,这应该可以解决你的问题。它不需要是任何有效的 URL,因为它永远不会在 Internet 上访问该 URL 并检查其有效性。

但是,我建议你从它的所有者那里得到更正WSDL,然后再使用它,否则你最终可能会遇到命名空间不匹配的问题,浪费大量时间。暂时要继续进行测试,您几乎可以在<wsdl:definition>标签中添加任何内容,例如:

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

ps发挥你的想象力:)

于 2013-01-15T19:25:55.817 回答