Protocolos de Mensagens Suportados

Os aplicativos cliente podem acessar serviços da Web enviando mensagens que utilizam o protocolo de mensagens SOAP/HTTP ou três protocolos de mensagens tipo REST.

Os aplicativos cliente podem desempenhar operações do banco de dados enviando pedidos para os serviços da Web que oferecem estas operações. Os pedidos são mensagens que se encontram em um dos quatro protocolos a seguir:

Por exemplo, suponha que um aplicativo cliente solicite um serviço da Web para inserir uma linha na tabela EMPLOYEE do banco de dados DB2 SAMPLE. Os tipos de dados das colunas na tabela EMPLOYEE são os seguintes:

Tabela 1. As colunas da tabela EMPLOYEE
Nome da coluna Tipo de Dados
EMPNO número inteiro
LASTNAME varchar
FIRSTNME varchar
SKILLS XML

Essa tabela lista os valores na nova linha a serem inseridos:

Tabela 2. Os valores a serem inseridos na tabela EMPLOYEE
Nome da coluna Valor:
EMPNO 200170
LASTNAME Yamamoto
FIRSTNME Kiyoshi
SKILLS
<skills>
<languages>
  <language name="Japanese" native="yes" level="excellent"/>
  <language name="English" native="no" level="good"/>
</languages>
<softskills>
  <skill name="team leadership" level="good"/>
  <skill name="presentation" level="medium"/>
</softskills>
</skills>

Esta é a operação definida no serviço da Web:

valores de funcionários INSERT INTO (:empno, :lastname, :firstnme, :skills)

Exemplo de mensagem de entrada que utiliza o protocolo de mensagem SOAP/HTTP

Aqui encontra-se um exemplo da mensagem que um aplicativo cliente poderia enviar utilizando o protocolo SOAP/HTTP.

POST /Sample/services/Sample HTTP/1.1
Host: localhost:8070
Content-Type: text/xml; charset=utf-8
Content-Length: 704
Accept: application/soap+xml, application/dime, multipart/related, text/*
User-Agent: IBM Web Services Explorer
Cache-Control: no-cache
Pragma: no-cache
SOAPAction: "http://www.example.org/insertEmployee"
   Connection: close
<soapenv:Envelope xmlns:q0="http://www.example.org" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <soapenv:Body>
    <q0:insertEmployee>
  		<empno>9225C03</empno>
  		<name>Doe</name>
  		<firstname>John</firstname>
		<skills>
			<skills>
				<languages>
  					<language level="excellent" name="Japanese" native="yes"/>
  					<language level="good" name="English" native="no"/>
				</languages>
				<softskills>
  					<skill level="good" name="team leadership"/>
  					<skill level="medium" name="presentation"/>
				</softskills>
			</skills>
		</skills>
	 </q0:insertEmployee>
  </soapenv:Body>
</soapenv:Envelope>

Exemplo de mensagens de entrada que utilizam os protocolos de mensagens tipo REST

Aqui encontram-se exemplos das mensagens tipo REST que um aplicativo cliente poderia enviar. As mensagens seguem o formato REST, mas não se comportam como mensagens normais tipo REST, porque elas não acessam diretamente uma entidade de dados. Em vez disso, desempenham funções. Por exemplo, mensagens no formato GET não solicitam uma cópia de um recurso. Além disso, mensagens no formato POST não necessariamente incluem informações para um recurso. Em vez disso, as mensagens GET e POST enviadas pelos aplicativos cliente são pedidos para o desempenho de operações em dados em um banco de dados.

Exemplo de mensagem de entrada que utiliza o protocolo de HTTP GET tipo REST (url-encoded)
GET /Sample/RestEndpoint/Sample/insertEmployee?empno=9225C03&name;=Doe&firstname;=John&skills;=%3Cskills%3E%0D%0A%3Clanguages%3E%0D%0A++
%3Clanguage+level%3D%22very+good%22+name%3D%22Japanese%22+native%3D%22yes%22%2F%3E%0D%0A++%3Clanguage+level%3D%22good%22+name%3D%22English%22+
native%3D%22no%22%2F%3E%0D%0A%3C%2Flanguages%3E%0D%0A%3Csoftskills%3E%0D%0A++%3Cskill+level%3D%22good%22+name%3D%22team+leadership%22%2F%3E%
0D%0A++%3Cskill+level%3D%22medium%22+name%3D%22presentation%22%2F%3E%0D%0A%3C%2Fsoftskills%3E%0D%0A%3C%2Fskills%3E%0D%0A HTTP/1.1
User-Agent: Java/1.5.0
Host: localhost:8070
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Connection: keep-alive
Content-type: application/x-www-form-urlencoded
A URL resultante para o pedido seria semelhante a isso:
http://server:port_number/Sample/RestEndpoint/Sample/insertEmployee?empno=9225C03&name;=Doe&firstname;=John&skills;=%3Cskills%3E%0D%0A%3Clanguages%3E%0D%0A++
%3Clanguage+level%3D%22very+good%22+name%3D%22Japanese%22+native%3D%22yes%22%2F%3E%0D%0A++%3Clanguage+level%3D%22good%22+name%3D%22English%22+
native%3D%22no%22%2F%3E%0D%0A%3C%2Flanguages%3E%0D%0A%3Csoftskills%3E%0D%0A++%3Cskill+level%3D%22good%22+name%3D%22team+leadership%22%2F%3E%
0D%0A++%3Cskill+level%3D%22medium%22+name%3D%22presentation%22%2F%3E%0D%0A%3C%2Fsoftskills%3E%0D%0A%3C%2Fskills%3E%0D%0A
A URL deve utilizar caracteres UTF-8 e estar de acordo com o padrão RPC 2396.
Exemplo de mensagem de entrada que utiliza HTTP POST tipo REST (url-encoded)
POST /Sample/RestEndpoint/Sample/insertEmployee HTTP/1.1
User-Agent: Java/1.5.0
Host: localhost:8070
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Connection: keep-alive
Content-type: application/x-www-form-urlencoded
Content-Length: 485

empno=9225C03&name;=Doe&firstname;=John&skills;=%3Cskills%3E%0D%0A%3Clanguages%3E%0D%0A++%3Clanguage+level%3D%22very+good%22+name%3D%22Japanese%22+
native%3D%22yes%22%2F%3E%0D%0A++%3Clanguage+level%3D%22good%22+name%3D%22English%22+native%3D%22no%22%2F%3E%0D%0A%3C%2Flanguages%3E%0D%0A%3Csof
tskills%3E%0D%0A++%3Cskill+level%3D%22good%22+name%3D%22team+leadership%22%2F%3E%0D%0A++%3Cskill+level%3D%22medium%22+name%3D%22presentation%2
2%2F%3E%0D%0A%3C%2Fsoftskills%3E%0D%0A%3C%2Fskills%3E%0D%0A
Exemplo de mensagem de entrada que utiliza HTTP POST tipo REST (url-encoded)
POST /Sample/RestEndpoint/Sample/insertEmployee HTTP/1.1
Content-Type: text/xml; charset=utf-8
User-Agent: Michael
Accept: text/xml, application/dime, multipart/related, text/*
Content-Length: 467
Host: localhost:8070
Connection: keep-alive


<q0:insertEmployee xmlns:q0="http://www.example.org"><empno>9225C03</empno><name>Doe</name><firstname>John</firstname><skills><skills>
<languages>
<language name="Japanese" native="yes" level="excellent"/>
<language name="English" native="no" level="good"/>
</languages>
<softskills>
<skill name="team leadership" level="good"/>
<skill name="presentation" level="medium"/>
</softskills>
</skills></skills></q0:insertEmployee>
Conceitos relacionados
Suporte para o Tipo de Dados XML Nativo do DB2 em Operações de Serviços da Web
Tarefas relacionadas
Desenvolvendo e Implementando Serviços da Web

Feedback