UDDI 查詢示例(需要 Internet Explorer 5.x)
通用描述、發現和集成 (UDDI) 服務(英文)目前可以直接運行於 Microsoft、IBM 和 Ariba。這是一種聯機 Web 服務,可在應用程序中用來動態發現其他聯機服務。該服務全部被巧妙地打包在一個簡單的 XML 接口中。
對於有經驗的 XML 讀者,在客戶端應用程序和中間層服務器之間傳遞 XML 根本不是什麼新鮮事。我們從 1998 年開始就這麼做。但是,我們也很高興能看到行業在這個方向上開發出象 UDDI 一樣有用的其他服務。
所以,讓我們專注於基本事實。您真正需要了解的是可以向其張貼 XML 的 URL。我們經過努力,找到了以下三個 URL:
http://uddi.microsoft.com/inquire
http://uddi.ariba.com/UDDIProcessor.aw/ad/process
http://www-3.ibm.com/services/uddi/inquiryapi
它們是用於“查詢”的 UDDI 入口點。用於更新的入口點與它們不一樣,並且通常出於安全原因而使用 HTTPS 地址。
張貼什麼樣的 XML?
首先,XML 必須是 UTF-8(由 UDDI 項目精心簡化)格式的,並且必須包裝在 SOAP 信封中。SOAP 信封看上去如下所示:
<?xml version='1.0' encoding='UTF-8'?>
<Envelope xmlns='http://schemas.xmlsoap.org/soap/envelope/'>
<Body>?lt;/Body>
</Envelope>
元素的內容可以是來自 uddi 架構(英文)的任何查詢。例如,以下查詢,當置於 SOAP 信封中時將返回有關 Microsoft 的詳細信息:
<find_business generic="1.0" xmlns="urn:uddi-org:api">
<name>Microsoft</name>
</find_business>
注意:我們將名稱空間從 SOAP 名稱空間切換到“urn:uddi-org:api”名稱空間。在 find_business 查詢中還可以執行許多其他操作。
如何張貼 XML?
您可以在 JScript 文件或 HTML 頁面中使用 MSXML 提供的 XMLHTTP 控件,如下所示:
http = new ActiveXObject("Microsoft.XMLHTTP");
http.open("POST", url, false);
http.setRequestHeader("Accept","text/xml");
http.setRequestHeader("Cache-Control","no-cache");
http.setRequestHeader("SOAPAction",'""');
http.send(msg);
在本例中,我決定做一個好 SOAP 公民,因而在 HTTP 標頭中設置 SoapAction。因為每次我都需要動態結果,所以我還決定只接受 text/xml 結果,並且關閉所有緩存。當然,在附加的示例代碼中,我是通過就緒狀態變化回叫來異步完成這些操作的。
返回什麼內容?
當然是 XML。在這種情況下,您獲得當前為 Microsoft 注冊的 <businessInfo> 元素的詳細列表,包括有關 UDDI 服務本身的信息。
<businessList generic="1.0" operator="Microsoft Corporation"
truncated="false" xmlns="urn:uddi-org:api">
<businessInfos>
<businessInfo businessKey="0076B468-EB27-42E5-AC09-9955CFF462A3">
<name>Microsoft Corporation</name>
<description xml:lang="en">以優秀軟件給人力量——隨時,隨地,在任何
設備上——這就是 Microsoft 的目標。作為
全球領先的個人和商務軟件廠商,我們致力於
提供創新的產品和服務,滿足我們客戶的需求</description>
<serviceInfos>
<serviceInfo businessKey="0076B468-EB27-42E5-AC09-9955CFF462A3"
serviceKey="1FFE1F71-2AF3-45FB-B7