- SABUN Basit Nesne Erişim P rotocol açılımı
- SABUN bir uygulama iletişim protokolü olan
- SOAP mesajları göndermek ve almak için bir biçimdir
- SABUN bağımsız bir platformdur
- SABUN XML dayanmaktadır
- SABUN W3C için genelde önerilir
Neden SABUN?
web uygulamaları İnternet üzerinden iletişim kurabilmesi olması çok önemlidir.
HTTP tüm internet tarayıcıları ve sunucular tarafından desteklendiği için uygulamalar arasında iletişim kurmak için en iyi yolu, HTTP üzerinden olduğunu. SABUN Bunu gerçekleştirmek için oluşturuldu.
SABUN farklı teknolojiler ve programlama dilleri ile, farklı işletim sistemleri üzerinde çalışan uygulamalar arasında iletişim kurmak için bir yol sağlar.
SABUN Yapı Taşları
Bir SOAP mesajı aşağıdaki unsurları içeren sıradan bir XML belgesidir:
- bir SOAP mesajı olarak XML belgesi tanımlayan bir zarf elemanı
- başlık bilgileri içeren bir üstbilgi elemanının
- çağrı ve cevap bilgilerini içeren bir Vücut elemanı
- hataları ve durum bilgilerini içeren bir Arıza elemanı
Tüm elemanlar yukarıda SOAP zarfında için varsayılan ad bildirilmiştir:
http://www.w3.org/2003/05/soap-envelope/
ve SOAP kodlama ve veri türleri için varsayılan ad alanıdır:
http://www.w3.org/2003/05/soap-encoding
Söz dizimi Kuralları
İşte bazı önemli sözdizimi kuralları şunlardır:
- Bir SOAP mesajı XML kullanarak kodlanmış GEREKİR
- SOAP Zarfı ad kullanmak MUTLAKA bir SOAP mesajı
- SABUN Kodlama ad kullanmak MUTLAKA bir SOAP mesajı
- Bir DTD atıf yapmamalıdır gereken bir SOAP mesajı
- Bir SOAP mesajı bir XML İşleme Talimatları içermemelidir
İskelet SABUN Mesajı
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
<soap:Header>
...
</soap:Header>
<soap:Body>
...
<soap:Fault>
...
</soap:Fault>
</soap:Body>
</soap:Envelope>
SOAP Zarfı Eleman
Gerekli SOAP Zarfı eleman bir SOAP mesajının kök unsurudur. Bu eleman bir SOAP mesajı olarak XML belgesi tanımlar.
Örnek
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
...
Message information goes here
...
</soap:Envelope>
xmlns: sabun Ad
Yukarıdaki örnekte sabun ad: xmlns dikkat edin. : Her zaman değerini olmalıdır "http://www.w3.org/2003/05/soap-envelope/" .
ad bir SOAP Zarf olarak Zarf tanımlar.
Farklı ad kullanılırsa, uygulama bir hata üretir ve mesaj atar.
encodingStyle Özellik
encodingStyle özelliği belgede kullanılan veri tiplerini belirlemek için kullanılır. Bu nitelik, herhangi SABUN elemanı görünür ve öğenin içeriği ve tüm alt öğeler için geçerlidir edilebilir.
Bir SOAP mesajı varsayılan kodlaması var.
Sözdizimi
soap:encodingStyle=" Örnek
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
...
Message information goes here
...
</soap:Envelope>
SOAP Başlığı Eleman
İsteğe bağlı SOAP Başlığı eleman uygulamaya özgü bilgileri içerir (like authentication, payment, etc) SABUN mesajla ilgili.
Başlık öğe mevcutsa, bu Zarf elemanın birinci alt öğe olmalıdır.
Note: Başlık elementin bütün acil alt öğeleri ad kalifiye olmalıdır.
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
<soap:Header>
<m:Trans xmlns:m="http://www.w3ii.com/transaction/"
soap:mustUnderstand="1">234
</m:Trans>
</soap:Header>
...
...
</soap:Envelope>
Yukarıdaki örnek ile bir üstbilgi içeriyor "Trans" öğesi, bir "mustUnderstand" değeri 1 ile nitelik ve 234 değeri.
SABUN varsayılan ad alanında üç özelliği tanımlar. Bu özellikler şunlardır: mustUnderstand, aktör ve encodingStyle.
SABUN Başlığı tanımlanan özellikler bir alıcı SABUN mesajı nasıl işleyeceğini belirler.
mustUnderstand Özellik
SABUN mustUnderstand özelliği, bir başlık giriş alıcı işlemek için zorunlu ya da isteğe bağlı olup olmadığını göstermek için kullanılabilir.
Eğer = "1" Başlık elemanının alt öğesini mustUnderstand eklerseniz o Başlığını işleme alıcı elemanı tanımak gerektiğini gösterir. Alıcı eleman tanımazsa Başlığını işlerken başarısız olur.
Sözdizimi
soap:mustUnderstand="0|1" Örnek
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
<soap:Header>
<m:Trans xmlns:m="http://www.w3ii.com/transaction/"
soap:mustUnderstand="1">234
</m:Trans>
</soap:Header>
...
...
</soap:Envelope>
actor Özellik
Bir SOAP mesaj, mesaj yolu boyunca farklı uç noktaları geçirilerek bir alıcıya bir göndericiden hareket edebilir. Bununla birlikte, bir sabun mesajın tüm parçaları nihai nokta için amaçlanan edilebilir değildir, bunun yerine, mesaj yolunda uç noktaları bir ya da daha fazlası için tasarlanmış olabilir.
SABUN aktör niteliği belirli bitiş noktasına Başlık elemanı hitap etmek için kullanılır.
Sözdizimi
soap:actor=" Örnek
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
<soap:Header>
<m:Trans xmlns:m="http://www.w3ii.com/transaction/"
soap:actor="http://www.w3ii.com/appml/">234
</m:Trans>
</soap:Header>
...
...
</soap:Envelope>
encodingStyle Özellik
encodingStyle özelliği belgede kullanılan veri tiplerini belirlemek için kullanılır. Bu nitelik, herhangi SABUN elemanı üzerinde görünebilir ve bu elementin içeriği ve tüm alt öğeler için geçerli olacaktır.
Bir SOAP mesajı varsayılan kodlaması var.
Sözdizimi
soap:encodingStyle=" SABUN Vücut Eleman Gerekli SABUN Vücut eleman mesajın nihai son nokta yönelik fiili SABUN mesaj içerir.
SABUN Vücut elemanın Derhal alt öğeleri ad nitelikli olabilir.
Örnek
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
<soap:Body>
<m:GetPrice xmlns:m="http://www.w3ii.com/prices">
<m:Item>Apples</m:Item>
</m:GetPrice>
</soap:Body>
</soap:Envelope>
Yukarıdaki örnekte elma fiyatı ister. GetPrice ve madde unsurları yukarıda uygulamaya özel elemanlar: m unutmayın. Onlar SABUN ad alanının bir parçası değildir.
Bir SOAP yanıtı şöyle görünebilir:
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
<soap:Body>
<m:GetPriceResponse xmlns:m="http://www.w3ii.com/prices">
<m:Price>1.90</m:Price>
</m:GetPriceResponse>
</soap:Body>
</soap:Envelope>
SABUN Arıza Eleman
İsteğe bağlı SOAP hatası eleman hata mesajlarını göstermek için kullanılır.
SOAP hatası eleman bir SOAP mesajı için hata ve durum bilgilerini tutar.
Bir Hata öğe mevcutsa, bu Vücut elemanının alt öğesi olarak görünmelidir. Bir Hata elemanı sadece bir SOAP mesajında kez görünebilir.
SABUN Arıza elemanı aşağıdaki alt öğesi vardır:
Alt Eleman Açıklama <faultcode> arızayı tespit edilmesine yönelik bir kod <faultstring> arızanın Okunabilir açıklaması <faultactor> gerçekleşmesi hatasına neden kimin hakkında bilgi <detail> Vücut elemanına ilişkin uygulama özgü hata bilgisini depolar
SABUN Arıza Kodları
hataları tarif aşağıda tanımlanan faultcode değerleri faultcode elemanı kullanılmalıdır:
Hata Açıklama VersionMismatch SOAP Zarfı elemanı için geçersiz ad Bulundu MustUnderstand Ile Başlık elemanının Hemen bir alt öğesi, mustUnderstand olarak ayarlanmış öznitelik "1" , anlaşılmadı Client Mesaj hatalı şekillendirilmiş veya yanlış bilgi içermiştir Server mesajı devam edemeyeceğini bu nedenle sunucu ile ilgili bir sorun oluştu
HTTP Protokolü
HTTP, TCP / IP üzerinden iletişim kurar. Bir HTTP istemci TCP kullanarak bir HTTP sunucusu bağlanır. bir bağlantı kurmaya sonra, istemci sunucuya bir HTTP isteği mesajı gönderebilirsiniz:
POST /item HTTP/1.1
Host: 189.123.255.239
Content-Type: text/plain
Content-Length: 200
Sunucu daha sonra talebi işleme ve müşteriye geri bir HTTP yanıtı gönderir. tepki isteğinin durumunu gösteren bir durum kodu içeriyor:
200 OK
Content-Type: text/plain
Content-Length: 200
Yukarıdaki örnekte, sunucu Bu HTTP için standart başarı kodu 200 olan bir durum kodu döndürdü.
Sunucu isteği çözülemiyor olsaydı, böyle döndü şey olabilir:
400 Bad Request
Content-Length: 0
SABUN Bağlama
SABUN özellikleri de değiştirilir olup nasıl SOAP mesajları yapısını tanımlar. Bu boşluk denen tarafından doldurulur "SOAP Bindings" . SABUN bağlamaları SOAP mesajları etkili bir şekilde bir taşıma protokolü kullanılarak değiştirilebileceği izin mekanizmalardır.
En SOAP uygulamaları, örneğin HTTP veya SMTP gibi ortak nakil protokolleri için, bağlantı sağlayan.
HTTP senkron ve yaygın olarak kullanılmaktadır. Content-Type ve İçerik-Uzunluk: Bir SOAP HTTP isteği en az iki HTTP başlıklarını belirtir.
SMTP eşzamansızsa ve son çare ya da belirli durumlarda kullanılır.
SOAP Java uygulamaları genellikle JMS için seçici bağlantı sağlamak (Java Messaging System) protokolü.
İçerik türü
SOAP talebi ve yanıtı için içerik tipi başlık mesajının ve karakter kodlaması için MIME türü tanımlar (optional) bir istek ya da cevap XML gövdesi için de kullanılır.
Sözdizimi
Content-Type: MIMEType; charset=character-encoding
Örnek
POST /item HTTP/1.1
Content-Type: application/soap+xml; charset=utf-8
İçerik-Uzunluk
bir SOAP isteği ve yanıtı için içerik-uzunluk başlığı isteği veya yanıt metninde bayt sayısını belirtir.
Sözdizimi
Content-Length: bytes Örnek
POST /item HTTP/1.1
Content-Type: application/soap+xml; charset=utf-8
Content-Length: 250
Bir SOAP Örnek
Aşağıdaki örnekte, bir GetStockPrice isteği sunucuya gönderilir. istek bir StockName parametresini ve yanıt olarak iade edilecektir bir fiyat parametresi vardır. Fonksiyon için ad tanımlanır "http://www.example.org/stock" .
Bir SOAP istek:
POST /InStock HTTP/1.1
Host: www.example.org
Content-Type: application/soap+xml; charset=utf-8
Content-Length: nnn
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
<soap:Body xmlns:m="http://www.example.org/stock">
<m:GetStockPrice>
<m:StockName>IBM</m:StockName>
</m:GetStockPrice>
</soap:Body>
</soap:Envelope>
SABUN yanıtı:
HTTP/1.1 200 OK
Content-Type: application/soap+xml; charset=utf-8
Content-Length: nnn
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
<soap:Body xmlns:m="http://www.example.org/stock">
<m:GetStockPriceResponse>
<m:Price>34.5</m:Price>
</m:GetStockPriceResponse>
</soap:Body>
</soap:Envelope>