|
XML SOAP не означаван сапун за XML, а Simple Object Access Protocol.Това е прост протокол базиран на XML за обмяна на информация по HTTP.Или казано по-просто SOAP е протокол за достъп към Ъеб обслужването.С негова помощ вие изпращате съобщения.Днес за обмяна между обекти като COBRA и DCOM се използва RPC (Remote Procedure Calls).Но при RPC възникват проблеми, защото Firewall и Proxy сърварите блокират такъв вид информация.Но със SOAP няма такива проблеми.
Едно съобщение е прост XML документ състоящ се от следните елементи:
http://www.w3.org/2001/12/soap-envelope А декларацията за енкодинга се намира тук: http://www.w3.org/2001/12/soap-encoding А ето и някои правила за синтаксисът на тези съобщения:
А ето и скелета на едно съобщение: CODE
ENVELOPE елемента е корена на всяко SOAP съобщение.Този елемент дефинира XML документа, като SOAP съобщение.Трябва да отбележим, че атрибута xmlns:soap namespace абсолютно винаги трябва да има стойност http://www.w3.org/2001/12/soap-envelope, и той дефинира обвивката на SOAP съобщението: CODE
Атрибура soap:encodingStyle се използва за да дефинира типът информация, която се използва в документа.Този атрибут може да се появи във всяко едно съобщене и ще позволи елемнтите, които имат съдържание.Стойноста на този атрибут не е задължително да бъде една и съща навсякаде.Ето синтаксисът на този атрибут: soap:encodingStyle="URI" А ето и един пример: CODE
HEADER елемнта съдържа header информация.Той съдържа специфична информация (автентичност, възнаграждение и др.) за SOAP съобщението.Този елемент не е задължителен, но ако все пак присъства, той трябва да е дете на Envelope.Всяко дете на този елемент трябва да има квалификация за namespace: CODE
Примерът горе съдържа header с Trans елемент.Атрибута soap:mustUnderstand може да има стойност от 1 до 234.SOAP дефинира три елемента в namespace (http://www.w3.org/2001/12/soap-envelope).Тези три атрибута са: actor, mustUnderstand, и encodingStyle. Атрибутите дефинирани в headera дефинират как получаващия информация да процедира с нея. Атрибута Actor може да пътува между изпращащтия и получаващия информация, като преминава през различните тозки по пътя си.Не всичк тозки могат да бъдат дефинирани, но вместо това можете да дефинирате една или две точки по пътя.Синтаксисът на този атрибут е следния: soap:actor="URI" И един пример: CODE
Атрибута soap:mustUnderstand се използва за да дефинира дали информациято, която влиза в headera е здължителна или не.Ако сложите стойноста на атрибута да е 1, това дефинира, че получателя на информация трябва да разпознае елемента.Ако получателя не разпознае елемента, тогава ще има грешка при процедурата. BODY елемнта е задължителен за документа, защото тозо елемент съдржа самото съобщение.Всяко дете на този елемент трябва да е квалифицирано с namespace.Това е един грешен body елемент, който ще индикира грешка: CODE
Примера горе изисква стойноста на Apples.Трябава да отбележим, че елементите m:GetPrice и m:Item са специфични елементи.Те не са стандарт за SOAP.И отговора ще изглежда така: CODE
FAULT елемента се използва за да задържи някоя грешка възникнала по време на процеса, и за статистика за SOAP съобщението.Грешното съобщение се съхранява в елемента.Този елемент не е задължителен, но ако все пак решите да го сложите, той трябва да е дете на елемента Body.самия елемнт има следните поделементи: CODE
Стойностите на елемента faultcode долу ттябва да се използват в елемента, когато има грешка: VersionMismatch Невалидна namespace за SOAP Envelope елемента MustUnderstand Елемент от Header елемента, със стойност на атрибута mustUnderstand=1, не е рабрана Client Съобщението е некоректно формирано или съдържа некоректна информация Server Има проблем със сървъра, затова съобщението не може да продължи HTTP комуникира с помоща на TCP/IP.Един потребител на HTTP съдържа HTTP сървър, който използва TCP.Следа като се установи връзка, клиентът може да изпрати HTTP молба към сървъра: CODE
От своя страна сървъра разпознава молбата и изпраща отговор на клиента: CODE
Ако сървъра не може да разпознае молбата, ще върне нео такова: CODE
SOAP методът е HTTP молба/отговор, който пасва със SOAP енкодинг правилата. HTTP+XML=SOAP Една SOAP молба може да е HTTP POST или HTTP GET молба.HTTP POST молбата дефинира поне две HTTP headers:Content-Type и Content-Length. Content-Type header за SOAP молба и отговор дефинира MIME видът за съобщението и енкодинга, изплзвани от XML Body за молба и отговор.Синтаксисът е следния: CODE
И един пример: CODE
Content-Length header за SOAP молба или отговор дефинира големината на съобщението в байтове.Синтаксисът е следния: CODE
И един пример: CODE
За да ви стане по-ясно как действа SOAP разгледайте долния пример: Молба: CODE
Отговор: CODE
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||









