2013-01-14 71 views
2

我正在嘗試將WSDL導入SOAP-UI項目 - 這是一個用於測試SOAP調用的簡單工具。當我嘗試導入WSDL我得到以下錯誤:WSDL中錯誤的xmlns

WSDLException (at /wsdl:definitions/portType/wsdl:operation[1]/wsdl:input): faultCode=UNBOUND_PREFIX: Unable to determine namespace of 'nrns:getDynamicsUploadQueueRequest

從檢查WSDL我看到有定義區域下沒有xmlns:nrns聲明。我在論壇上讀到,我可以將WSDL重新保存到磁盤並更正WSDL。但是,我是一個極端的SOAP noob,我不知道定義應該是什麼。我認爲,如果我只是將以下內容添加到定義區域,應該對其進行分類。任何人都知道我會用什麼來替換這些問號?我的方法完全錯了嗎?

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/'> 

回答

3

這是WSDL中的錯誤。看起來「nrns」的意思是https://apps.net-results.com/soap/v1。請注意,這是WSDL的targetNamespace,位於definitions元素中。

所以只需添加

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

definitions元素,你應該罰款。

1

命名空間是你的元素關聯到一個特定的類型,以避免名稱衝突的方式。請參考這裏http://www.w3schools.com/xml/xml_namespaces.asp

你幾乎可以做任何事情???,這應該可以解決你的問題。它不需要任何有效的URL,因爲它永遠不會在互聯網上訪問該URL並檢查其有效性。

但是,我建議你從它的所有者那裏得到更正的WSDL,並且在稍後你可能會遇到關於命名空間不匹配浪費大量時間的問題。對於暫且繼續您的測試,你可以幾乎把任何東西<wsdl:definition>標籤,是這樣的:

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

附:玩你的想象力:)

+0

謝謝。這工作。 – mrtsherman

+0

我很高興它幫助 –

+0

-1:命名空間很重要。你不能只做他們。 –