您可以利用連接器的要求處理功能,讓協同作業能夠呼叫 HTTP 服務。 您必須配置連接器及其要求處理元件:通訊協定處理常式組織架構、通訊協定處理常式。
在執行時期,連接器會從協同作業那邊收到商業物件式格式的要求。 已配置為使用 HTTP 服務的協同作業所發出的 TLO 含有商業物件 (要求,可能還有回應及錯誤商業物件)。 TLO 及其子項商業物件包含屬性和 ASI,用來指定處理模式 (同步或非同步)、 資料處理常式 MIME 類型、使用哪個通訊協定處理常式,以及目標位址。 通訊協定處理常式會利用這項資訊來呼叫資料處理常式的實例、 將「要求」商業物件轉換成要求訊息,以及呼叫目標 HTTP 服務。 如果是同步模式,通訊協定處理常式一樣會呼叫資料處理常式, 將回應訊息轉換成「回應」商業物件,再傳回給協同作業。
在回應要求訊息時,連接器可能從遠端交易友機收到下列任何項目:
通訊協定處理常式在要求處理中扮演重要的角色。
協同作業可以透過 HTTP 或 HTTPS 傳輸來呼叫 HTTP 服務。 連接器有一個通訊協定處理常式及對應的通道: 用於呼叫 HTTP 和 HTTPS 服務的 HTTP-HTTPS 通訊協定處理常式
通訊協定處理常式組織架構會管理通訊協定處理常式,且於啟動時載入。 當連接器收到「要求」商業物件時, 要求執行緒 (請注意,每一個協同作業要求進來時,各有自己的執行緒) 會呼叫通訊協定處理常式組織架構來處理要求。
通訊協定處理常式組織架構會讀取 TLO Handler 屬性 ASI,藉此決定要使用的通訊協定處理常式。 套用一系列規則之後 (請參閱HTTP-HTTPS 通訊協定處理常式處理程序), 通訊協定處理常式會呼叫資料處理常式,將「要求」商業物件轉換成要求訊息。 通訊協定處理常式會將要求訊息包裝成傳輸 -- HTTP(S) -- 訊息。
然後,通訊協定處理常式讀取「要求」商業物件 Protocol Config MO 的 Destination 屬性來決定目標位址。 通訊協定處理常式再利用要求訊息來呼叫目標 HTTP 服務。
通訊協定處理常式會讀取 ws_mode TLO ASI 來判斷處理模式為同步或非同步。 如果此 ASI 設為 asynch,通訊協定處理常式就完成處理。 否則,通訊協定處理常式會等待回應訊息。 如果有回應訊息到達,通訊協定處理常式就擷取通訊協定標頭及內容。 然後,呼叫資料處理常式 (由 MimeType TLO 屬性指定),將訊息轉換成「回應」或「錯誤」商業物件。 同樣地,利用 Protocol Config MO,通訊協定處理常式在商業物件中設定通訊協定標頭。 最後,通訊協定處理常式將「回應」或「錯誤」商業物件傳回到協同作業。
視連接器配置而定,連接器內可能插入一或多個通訊協定處理常式。 連接器特有內容可讓您配置通訊協定處理常式。
HTTP-HTTPS 通訊協定處理常式的執行方法如通訊協定處理所述,本節再說明不同之處。 圖 16 顯示同步作業的 HTTP-HTTPS 通訊協定處理常式。
圖 16. HTTP-HTTPS 通訊協定處理常式:同步要求處理
圖 17 顯示非同步要求處理的 HTTP-HTTPS 顯示通訊協定處理常式。
圖 17. HTTP-HTTPS 通訊協定處理常式:非同步要求處理
HTTP-HTTPS 通訊協定處理常式會利用「要求」商業物件的物件層次 ASI (cw_mo_http) 來判斷 Protocol Config MO。 HTTP-HTTPS 通訊協定處理常式會讀取 HTTP Protocol Config MO 的 Destination 屬性來判斷目標 HTTP 服務的 URL。 如果遺漏 URL 或不完整,通訊協定處理常式就讓服務呼叫失敗。 如需 HTTP Protocol Config MO 及其屬性的進一步資訊,請參閱要求處理程序的 HTTP Protocol Config MO。
HTTP-HTTPS 通訊協定處理常式會利用資料處理常式傳回的要求訊息來呼叫 HTTP 服務。 如果已指定 HTTP Proxy 連接器配置內容,HTTP-HTTPS 通訊協定處理常式會照著運作。 HTTP-HTTPS 通訊協定處理常式會讀取傳回的回應。
表 27 摘要說明 HTTP-HTTPS 通訊協定處理常式判斷外送要求訊息的 Charset、MimeType、ContentType 及 Content-Type 標頭時所用的規則的優先順序。
表 27. HTTP-HTTPS 通訊協定處理常式對於離埠訊息的處理規則
優先順序 | Charset | MimeType | ContentType | Content-Type 標頭 |
1 | Protocol Config MO 的 Content-Type 標頭 | TLO 屬性中的 MimeType 內容 | Protocol Config MO 的 Content-Type 標頭 | Protocol Config MO 的 Content-Type 標頭 |
2 | TLO 屬性中的 Charset 內容 | 預設為 ContentType |
|
|
3 | 如果 ContentType 為 text/*,則預設為 ISO-8859-1。否則不使用 charset。 |
|
|
|
如表 27 所示:
ContentType | 預設 Charset |
text/* | ISO-8859-1
如需進一步資訊,請參閱 RFC2616。 |
application/* | 無預設值 |
其他 | 無預設值 |
表 29 摘要說明處理常式判斷回應訊息的 Charset、MimeType、ContentType 及 Content-Type 標頭時所用的規則的優先順序。
表 29. HTTP(s) 通訊協定處理常式對於入埠同步回應訊息的處理規則
優先順序 | Charset | MimeType | ContentType | Content-Type 標頭 |
1 | 進入的 HTTP 訊息 Content-Type 標頭值的 Charset 參數值 | 「要求」商業物件 Protocol Config MO 中的訊息 TransformationMap 子項商業物件 | Content-Type 標頭值中進入的 HTTP 訊息類型/子類型值 | 進入的 HTTP 訊息 Content-Type 標頭 |
2 | 「要求」商業物件 Protocol Config MO 中的訊息 TransformationMap 子項商業物件 | 要求訊息 MimeType,前提是要求與回應 ContentType 必須相符。 |
|
|
3 | 要求訊息 Charset,前提是要求與回應 ContentType 必須相符。 | TLO 中的 MimeType 內容 |
|
|
4 | TLO 中的 Charset 內容。 | 預設為 ContentType |
|
|
5 | 如果 Content-Type 為 text/*,則預設為 ISO-8859-1。否則不使用 Charset。 |
|
|
|
如表 29 所示:
處理常式會處理 HTTP Protocol Config MO。 協同作業要負責確保 HTTP Protocol Config MO 中傳遞的標頭值,在要求回應事件的環境定義中正確無誤。 處理常式會根據下列規則來填入標準標頭和自訂內容的資料: