日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

SOAP协议初级指南(9)

發布時間:2025/3/15 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SOAP协议初级指南(9) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

 錯誤處理

  一個服務器有時將不能正確地為一個方法請求提供服務。這可能是由于一般的HTTP錯誤造成的(如請求-URI不能被映射到本地的資源或一個HTTP級的安全違反)。也可能是在SOAP翻譯軟件中的問題,如馬歇爾打包錯誤或一個必須的頭不能被認出。其它可能的原因包括一個請求不能正確地被服務,或者應用/對象代碼決定要返回一個應用級的錯誤給調用者。這些情況在SOAP規范中都被清楚地加以處理。

  如果在分發對任何SOAP代碼的調用之前一個錯誤發生在HTTP層,一個純HTTP響應必須被返回。標準的HTTP狀態代碼編號將被采用,400級的代碼表示一個客戶引發的錯誤,500級的代碼表示服務器引發的錯誤。這通常在代碼執行前由Web服務器軟件自動處理。

  假設在HTTP層一切正常,錯誤發生的下一個地方是在那些翻譯和分發對應用代碼(如COM對象和CORBA伺服對象)的SOAP調用。如果錯誤發生在這一層,服務器必須返回一個錯誤消息來代替一個標準的響應消息。一個錯誤消息是下列被編碼為soap:Body的根元素的類型的實例。

<schema

targetNamespace=‘urn:schemas-xmlsoap-org:soap.v1‘

<element name=‘Fault‘>

<type>

<element name=‘faultcode‘ type=‘string‘ />

<element name=‘faultstring‘ type=‘string‘ />

<element name=‘runcode‘ type=‘string‘ />

<element name=‘detail‘ />

</type>

</element>

 

</schema>

 

  faultcode存取元素必須包含一個用已知的整數表示的SOAP錯誤代碼或者一個專門應用的名域限制的值。當前的SOAP 錯誤代碼如圖12所示。Faultstring存取元素包含對發生的錯誤的可讀性的描述。runcode 存取元素包含一個字符串,它的值必須是Yes, No或 Maybe,表明被請求的操作實際上是否在錯誤產生之前被執行。Detail存取元素是可選的,用于包含一個專門應用的異常對象。

  下面是一個對應于一個包含無法識別的必須的頭元素的請求的SOAP錯誤的例子:

<soap:Envelope

xmlns:soap=‘urn:schemas-xmlsoap-org:soap.v1‘

<soap:Body>

<soap:Fault> ;

<faultcode>200</faultcode>

<faultstring>

Unrecognized ‘causality‘ header

</faultstring>

<runcode>No</runcode>

</soap:Fault>

</soap:Body>

</soap:Envelope>

  假設具體應用的錯誤需要被返回,你可能看到如圖13所示的代碼。在應用定義的錯誤的情況下,考慮應用的異常/錯誤對象時detail存取元素起到了soap:Body 元素的作用。

  奧秘

  一個遺留的HTTP問題還需要進一步闡明。SOAP支持(但不需要)HTTP擴展框架約定來指定必須的HTTP頭擴展。這些約定主要有兩個目的。首先,它們允許任意的URI被用于限定給定的HTTP頭的范圍(象XML名域一樣)。第二,這些約定允許把必須的頭與可選的頭區分開來(象soap:mustUnderstand)。下面是一個使用HTTP擴展框架來把SOAPMethodName頭定義成為一個必須的頭擴展:

M-POST /foobar HTTP/1.1

Host: 209.110.197.2

Man: "urn:schemas-xmlsoap-org:soap.v1; ns=42"

42-SOAPMethodName: urn:bobnsid:IFoo#DoIt

  Man頭映射SOAP URI到前綴為42的頭,并表示沒有認出SOAP的服務器必須返回一個HTTP錯誤,狀態代碼為501 (沒有被實現) 或 510 (沒有被擴展)。HTTP方法必須是M-POST,表明目前是必須的頭擴展。

  結論

  SOAP是一個被類型化的序列化格式,它恰巧用HTTP 作為請求/響應消息傳輸協議。SOAP被設計為與正將出現的XML Schema規范密切配合,并支持在Internet的任何地方運行的COM, CORBA, Perl, Tcl, 和 Java-language, C, Python, 或 PHP 等程序間的互操作性。

  希望本文給了你一個對這個協議具體細節的更清晰的理解。我鼓勵你用SOAP進行實驗,或者試著使用SOAP使能的系統之一(列在http://www.develop.com/soap/),或者自己做一些工作。我本人發現采用腳本語言(Jscript),使一個基本的SOAP客戶與服務器建立并運行只花費了不到一個小時。針對你對HTTP和XML的熟悉程度,以及你的目標平臺的成熟度,你所花費的時間會有所不同。

轉載于:https://www.cnblogs.com/alaricblog/p/3278252.html

總結

以上是生活随笔為你收集整理的SOAP协议初级指南(9)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。