Lomadee, uma nova espécie na web. A maior plataforma de afiliados da América Latina.
Wikiloc
Lomadee, uma nova espécie na web. A maior plataforma de afiliados da América Latina.

Warning: Invalid argument supplied for foreach() in /home/adonai/public_html/wordpress/wp-content/plugins/rpx/rpx_v.php on line 1856
Log in with

Review do Notebook LG A520-U.BE44P1(5400)

Como o meu notebook da Dell já está muito velho e sem a bateria, decidi comprar um notebook novo, pesquisei bastante até achar um que me oferecesse bom custo e beneficio.
Eu procurava algum notebook que de preferência tivesse leitor de Blu-ray pois vai ser a tendência dos próximos anos, processador Intel i5 ou i7, que tivesse tela de 15″ de LED pois pela informações que tinha esse tipo de tela gasta menos e tem uma melhor qualidade de imagem e principalmente um HD grande.
Pesquisei os notebooks de vários fabricantes principalmente Dell, Sony, HP e LG. Como eu já tinha um Dell dei preferencia para eles mas os modelos da Dell que têm bom espaço de HD, tela de LED, processador Intel i5 e Blu-ray tem preço inicial acima de 3 mil reais e como eu não estava a fim de gastar tanto num notebook fui pesquisar outros modelos.
Após pesquisar bastante descobri o modelo A520 – 5400 da LG que é um dos lançamentos dessa marca, os recursos disponiveis no notebook eram perfeitos para o meu uso: tem tela 15,6 de LED, HD de 750 GB, processador Intel i5 – 2410M (2,30GHz, 3MB cache) o leitor de Blu-ray e além desses recursos que eu procurava esse notebook conta com uma placa de video dedicada modelo NVIDIA GeForce GT540M (2GB de memória dedicada) sendo que esse recurso geralmente não estava disponivel nos outros modelos pois aumenta o valor do note em uns 300 reais e vem outro recurso bem legal que eu nunca tinha usado que é o leitor de impressões digitais que estou achando muito útil.

Softwares Instalados
O notebook vem com poucos softwares pré-instalados, vem com um pacote de jogos infantis que alem de serem bem básico e na minha rápida analise achei sem graça e ainda por cima eles estão em Inglês, na minha opinião não deviam colocar esses jogos, eu já desinstalei do computador.
Tem vários softwares da LG para controlar as funções de alguns botões especiais, tipo: exibir na tela quando manda desabilitar a rede wireless, altera o volume ou o brilho da tela, tambem vem um software para atualizar os drives e os programas da LG que vêm instalados, esse software não funciona muito bem, em alguns momentos quando ele faz os downloads não exibe que o download está sendo feito, e algumas vezes travou quando eu mandei fechar ou cancelar, por isso ele não me agradou, mas no final das contas eu consegui atualizar todos os programas usando ele, verifiquei que esse programa pega versões mais atualizadas dos drives que aquelas que estão disponiveis no site da LG, por isso não adianta ir no site e baixar.
O LG Smart Recovery é um software para fazer uma imagem do sistema, é a ferramenta mais útil que eles disponibilizam, após eu fazer a atualização de todos os componentes do windows e os drives do sistema realizei um backup e caso eu tenha problema posso mandar recuperar o backup e o sistema volta a fica como veio de fabrica. Na primeira vez que o computador é inicializado já é feito um backup que fica numa partição segura e com isso não tem perigo do usuário perder a sua instalação do windows.
O LG Smart Care é um software que agrupa as configurações do sistema, na pratica ele não faz nada apenas agrupa funcionalidades do Windows e mostra tudo num local, é interessante pois facilita para o usuário localizar inúmeras ferramentas que estão espalhadas pelo Windows, para o usuário menos experiente é bom manter, mas para quem conhece eu acho que não vale a pena desperdiçar esse espaço em disco.
Também tem o LG Media FUNtasia é um software para gerenciamento de mídia que não vale a pena ser utilizado, pois existe softwares melhores para essa funcionalidade, esses são alguns dos softwares que vem instalados os outros não são tão importantes então não vou falar sobre eles.

Touchpad
O Touchpad na minha opinião é bem pequeno, mas não chegar ser menor que os dos outros notebooks, mas eles deveriam aproveitar melhor o espaço disponível e aumentar o tamanho do touchpad, os botões do touchpad também são muito pequenos e por isso demora um certo tempo para se acostumar com eles, mas agora que já estou usando o notebook a algum dias já me acostumei com eles.
O touchpad tem suporte a gestos, eu ainda não aprendi a usar todas as funções, mas é bem útil. Recomendo ler no manual as funcionalidades oferecidas, pois são várias. Eu demorei para aprender a usar as funcionalidades do software do touchpad, mas agora que estou aprendendo e que configurei corretamente as funcionalidades do software do touchpad o meu uso está bem mais eficiente.

Teclado
Como tudo que é novo e desconhecido o teclado não me agradou no inicio, pois as teclas foram alteradas em relação ao meu notebook da Dell, a principal alteração foi a tecla do “/” e “?” esses dois símbolos foram adicionados nas teclas “Q” e “W” e para ter acesso a esses símbolos é necessário clicar na tecla “Alt Gr” + “Q” = “/” ou “Alt Gr” + “W” = ? no inicio eu não gostei mas já estou me acostumando.
Acho que o maior problema do teclado é o tamanho pequeno das teclas de setas que são muito utilizadas e devido o tamanho pequeno são desconfortáveis para o uso.
As funções especiais que se encontram junto com as teclas F são bem úteis, pois permite desligar o wireless, desativar o touchpad quando se esta usando um mouse, controlar a velocidade da ventoinha além de outras atividades.
Na minha opinião o teclado e bem agradável de ser utilizado durante a digitação, uma coisa que podia ser melhorada é o fato do teclado como um todo não ser muito firme se você aperta o teclado todo se meche dando uma sensação de fragilidade o que não necessariamente pode se confirmar, isso só com o tempo para se verificar.

Webcam e Microfone
Testei a webcam e o microfone utilizando o Skype e a qualidade do microfone e da webcam me surpreenderam, com relação a webcam não chega a ser tão surpreendente, pois na atualidade o modelo de webcam de 1,3 Mp é o padrão dos notebooks por isso não deve diferenciar muito dos outros notebooks do mercado, mas os microfones estéreos são um show a parte, principalmente comparando com o do meu notebook da Dell, o som é muito limpo e alto, não é necessário ficar gritando na frente do computador para que ele capte o som, só precisa falar normalmente. Inclusive testei o skype em ligações para telefone fixo e a qualidade da ligação ficou perfeita, tanto para a pessoa que estava me ouvindo quando para mim, e isso que a minha conexão ADSL é de 1 Mbits.

Tela de 15,6″ de LED
A qualidade da imagem da tela de LED realmente é surpreendente, as imagens ficam muito claras e bonitas, os menores detalhes entre as tonalidades podem ser percebidas, e sem contar que consome menos energia e permite uma maior autonomia da bateria.

Drive de Blu-ray
Eu não cheguei a testar o drive com discos Blu-ray, mas realizei o teste com um DVD normal, testei copiar o conteúdo de um DVD de 2,91 GB para o HD, durante o processo de copia que levou 10 minutos o drive praticamente não fez barulho, embora durante a instalação de um outro programa o drive tenha sido um pouco mais barulhento, mas isso provavelmente se deve a problemas no disco que está desbalanceado e faz com que o drive vibre.

Duração da Bateria
No teste que realizei a bateria durou 4 horas, durante o teste usei a tela no menor brilho possível, mas não desliguei os programas de segundo plano o que certamente ajudou a diminuir a duração da bateria, por isso eu acho que é possível conseguir usar o notebook até por mais de 4 horas, em situações que não exija muito processamento.

Utilização
Eu deixei o notebook ligado por 36 horas, durante o download das atualizações do windows e das aplicações que vem instaladas nele, mesmo assim ele permaneceu sempre gelado, nenhuma parte do notebook aqueceu.
O cooler e o HD são bem silenciosos, nem é possível perceber que o computador está ligado, creio que nesses requisitos ninguém vai poder reclamar.

O que Falta?
Dos recursos desse Notebook, eu creio que o recurso que faz falta é o E-Sata que em breve deve se tornar popular e vai comprometer as funcionalidades desse notebook pela falta desse recurso.

Avaliação Final
Até o presente momento posso elogiar o desempenho do notebook, o processador é muito rápido, e não tenho notado problemas de desempenho, mas com relação aos 4 GB de memória RAM e estou sentindo que em breve serão insuficientes pois pretendo usar maquinas virtuais e dos 4 GB, apenas 1 GB tem ficado disponível, com relação ao teclado eu acho que deveria ser mais firme.
Hoje notei um problema na carcaça da tampa do notebook, devido ela ser de metal, me parece que ela está com uma pequena fuga de energia e quando a gente toca nela, sente isso, precisa de bastante atenção e realizar vários testes para perceber, mas creio que seja um problema, pois fuga de energia nunca é uma coisa boa, o que prova uma falha de isolamento no computador.

Tutorial de Banco de Dados – Parte 1

Decidi escrever esse tutorial para ajudar a consolidar os meus conhecimentos sobre banco de dados relacional e ajudar o pessoal interessado em aprender sobre o assunto, pois na minha opinião o material disponível em português sobre banco de dados na internet é bem fraco, por isso espero poder contribuir a melhora do conteúdo.

Esse meu tutorial tem como base um trabalho de banco de dados que fiz durante a faculdade, este trabalho foi realizado utilizando o banco de dados Oracle 11g enterprise, por isso algumas caracteristicas que vou apresentar são especificas do Oracle, como por exemplo a criação e o uso das sequences.

Durante este artigo vou apresentar o uso dos softwares SQL Developer e o SQL Developer Data Modeler ambos da Oracle, o SQL Developer vem incluso no instalador do banco de dados, mas o Data Modeler precisa ser baixado separado pois não está incluído.

Instalação do Oracle 11g

A instalação do banco de dados Oracle 11g é bem intuitiva e não precisa ser muito detalhada, apenas faço alguns alertas para quem for instalar:

- O Oracle ocupa muita memória, no meu micro ocupou mais de 700 mega, por isso quem tem uma memória de 2GB pode sofrer um pouco com isso, no meu caso eu instalei num micro separado apenas para essa finalidade, por isso não foi um grande problema.

- A instalação padrão do Oracle só aceita acessos locais ao banco de dados na porta 1521, como eu estava acessando o banco pela rede, tive esse problema, para resolver é preciso editar os arquivos “listener.ora” e “tnsnames.ora” para liberar o acesso externo, a edição dos arquivos não é muito bem documentada na internet, por isso eu tentei uma saída simples que felizmente funcionou, que foi excluir o listener criado na instalação e criar outro usando a ferramenta “Assistente de Configuração de Rede”, com isso resolvi o acesso ao banco de dados.

 

Criação de Usuários no Oracle

Outra dificuldade que tive quando instalei o Oracle pela primeira vês foi como criar um usuário para acessar o banco de dados, o processo é simples, supondo que você está no micro que está com o banco de dados instalado é preciso acessar o “Database Control” no endereço https://localhost:1158/em/ para fazer login você sua o usuário “system” que foi criado durante a instalação. Após estar logado vá na opção “Servidor” dentro dessa opção tem o grupo “Segurança”, neste grupo você vai encontrar a opção “Usuários”, é neste opção que você faz o gerenciamento de usuários do SGBD.

A criação de usuários é simples, você vai precisa se preocupar com as opções: Geral, Atribuições, Privilégios de Sistema, e Cotas,as outras opção para o usuário iniciante não são úteis.

Na opção Geral, você precisa definir o nome do usuário, o tipo de autenticação, o recomendado por ser a mais simples é a por senha, definir a senha e os tablespace do usuários, o recomendado é usar para “Tablespace Default ” o USERS e como “Tablespace Temporário” o TEMP

Na opção “Atribuições” você precisa verificar se a opção “Connect” sem ela o usuário não pode se conectar ao banco de dados.

Na opção “Privilégios de Sistema” você precisa dar a permissão para o usuário fazer a criação das tabelas, triggers e outros objetos que ele vai precisar utilizar, na figura a seguir tem a lista das atribuições que eu concedi ao usuário.

Na opção “Cotas” é necessário atribuir um valor no tablespace USERS para que o usuário possa efetivamente criar as tabelas lá, caso contrario o usuário não tera espaço em disco para poder criar as tabelas e inserir os dados nelas.

Feito isso é preciso mandar aplicar essas alterações, após isso já é possível acessar o banco de dados usando o usuário criado.

Usando o SQL Developer

Agora que o usuário já está criado é possível testar se ele está conseguindo acessar o banco de dados, para fazer os acessos ao banco de dados vou utilizar o SQL Developer, as configurações são simples, precisa definir o nome do usuário que foi criado, com a respectiva senha, definir o host que está executando o banco de dados, o padrão é localhost, a porta do listener que foi configurada, que já foi explicada anteriormente, e definir o SID do banco de dados, essa informação é definida durante a instalação do bando de dados, o padrão é orcl, na figura a seguir tem um exemplo da criação da conexão.

Se todas as configurações estiverem corretas, você vai clicar no botão “Testar” e ele vai informar que conseguiu se conectar com sucesso. Feito isso já podemos começar a criação de tabelas e outros objetos no banco de dados.

SQL Developer Data Modeler

Para a modelagem das tabelas eu utilizei o SQL Developer Data Modeler, eu testei outras ferramentas como o DB Main que foi o software que utilizei na faculdade e o Rational Rose da IBM. O DB Main é uma ferramenta gratuita, mas tem várias incompatibilidades com o Oracle: como o uso de tipos de dados sequenciais e consultas na declaração de tabelas, coisas que o Oracle implementa de forma diferente, o Rational Rose é muito bom, mas para o usuário doméstico é inviável, tendo em vista que custa cerca de 5000 reais e usar serial pirata é um saco, por isso preferi pesquisar mais e assim descobri que existe o SQL Developer Data Modeler da própria Oracle que pode ser baixado de graça e utilizado tranquilamente para uso não comercial, e o melhor de tudo é que ele é totalmente compatível com o SGBD da Oracle, o que não poderia ser diferente diga-se de passagem :) .

Como o meu foco não era aprender a fundo o uso do Data Modeler o que certamente iria tomar muito do meu tempo, eu fiz o suficiente para gerar as minhas tabelas. Como eu já tinha um esboço desse projeto da época que eu fiz na faculdade eu aproveitei e fiz a importação das tabelas já existentes para o software e ele já gerou o modelo inicial, e a partir desse ponto eu fui fazendo as correções.

A seguir vou mostrar como ficaram os diagramas relacional e lógico gerados pelo Data Modeler, sendo que o diagrama lógico que estou exibindo é o da notação de Barker que ao meu ver é a melhor para esse tipo de diagrama, mas o software permite trabalhar com outras duas notações, que também são muito uteis para o desenvolvimento do trabalho.

Como eu realizei a importação do projeto com as tabelas parcialmente prontas, acabei não seguindo os passos da correta modelagem de um projeto de banco de dados, mas fica a minha recomendação, primeiro desenhamos as tabelas no modelo lógico e a partir do modelo lógico geramos o modelo relacional, tarefa que o Data Modeler faz facilmente e rapidamente.

A seguir estou apresentando a figura do modelo lógico criado com o Data Modeler do projeto que vou desenvolver durante esse artigo.

A seguir tem o modelo relacional desse projeto.

 

A Modelagem do banco de dados

Agora que eu já mostrei como ficaram os diagramas da modelagem de dados do problema, vou apresentar o problema que me levou a esse resultado.

A proposta do trabalho e desenvolver a modelagem de dados para um software de revenda de automóveis que permita cadastrar os clientes, funcionários, veículos disponíveis para venda, veículos que estão em estoque, as vendas de veículos realizadas, as revisões de veiculos juntamente com as peças substituídas e armazenar a lista de peças para substituição e os respectivos fornecedores.

Para resolver o problema eu criei 20 tabelas, a seguir vou apresentar cadas uma delas e uma descrição básica.

1) Tabela pessoas: Essa tabela serve para armazenar os dados das pessoas cadastradas no sistema, tanto os clientes como funcionários.

2) Tabela clientes: Está tabela  estende a tabela de pessoas para armazenar apenas as pessoas que são clientes.

3)Tabela funcionarios: Está tabela estende a tabela de pessoas para armazenar apenas as pessoas que são funcionários.

4) Tabela enderecos: Esta tabela se relaciona com as tabelas pessoas, pessoa_endereco.  Nela é armazenado os endereços dos clientes, funcionários e dos fornecedores de peças que estão cadastrados no sistema.

5)  Tabela pessoa_endereco: Está tabela tem a função apenas de ligar as tabelas pessoas e endereços.

6) Tabela telefones: Está tabela se relaciona com a tabela endereços, nela é possível adicionar um ou mais números de telefone paraa cada endereço cadastrado.

7) Tabela cargos: Está tabela serve para armazenar os cargos disponíveis na estrutura da empresa.

8 ) Tabela cargos_funcionarios: Está tabela armazena todos os cargos que os funcionários assumiram durante o período que trabalharam na empresa.

9) Tabela fornecedor_endereco: Está tabela liga a tabela de fornecedores com os seus endereços, com isso é possível cadastrar inúmeros endereços para um mesmo fornecedor.

10) Tabela fornecedor_pecas: Nesta tabela se armazena as informações que são apenas referentes a um fornecedor de peças.

11) Tabela pecas: Na tabela pecas é armazenado a lista de peças que são fornecidas pelos fornecedores cadastrados.

12) Tabela revisoes: A tabela revisões armazena as revisões que foram feitas nos veículos dos clientes.

13) Tabela pecas_substituidas: Nesta tabela fica armazenado os dados das peças que foram substituídas em cada revisão. de veículos

14) Tabela veiculos: Nesta tabela fica armazenada as informações genéricas sobre os veículos que estão em estoque para venda e dos veículos de clientes que estão relacionados em uma revisão.

15) Tabela veiculos_clientes: Esta tabela armazena as informações relativas aos veículos de clientes que passaram por alguma revisão.

16) Tabela veiculos_venda: Está tabela armazena os dados dos veículos que atualmente a revenda está vendendo, independente de ter eles em estoque ou não.

17) Tabela vendas: Nesta tabela é armazenado os dados de cada venda de veículo.

18) Tabela veic_estoque: Aqui fica armazenado as informações dos veículos que estão a venda e que estão em estoque para entrega imediata.

19) Tabela acess_incluidos: Está tabela tem a finalidade de armazenar os acessórios opcionais que foram incluídos nos veículos que foram vendidos

20) Tabela acess_disponiveis: Está é a lista que opcionais disponível nos veículos que estão a venda.

Vou concluir a primeira parte desse artigo por aqui, na segunda parte vou começar a criação das tabelas e dos outros elementos necessários para gerar as tabelas no banco de dados, durante essa parte irei apresentar algumas dicas de como utilizar o SQL Developer Data Modeler para que as consultas SQL geradas por ele para a criação das tabelas saim corretas e completas, para evitar edições após a geração.

SOAP – Simple Object Access Protocol

Introdução
Lomadee, uma nova espécie na web. A maior plataforma de afiliados da América Latina.

SOAP é um protocolo simples baseado em XML que permite aplicações trocarem informações usando o protocolo HTTP, ou seja é um protocolo usado para acessar Web Serviçes.

Caracteristicas

- É um protocolo de comunicação

- É utilizado para comunicação entre aplicativos

- É um formato para envio de mensagens

- SOAP é usado para comunicação através da internet

- É independente de plataforma

- É independente da linguagem

- É baseado em XML

- É simples e extensível.

- Permite contornar firewalls

- É uma recomendação da W3C

Por que utilizar SOAP?

Ele é um protocolo importante pois permite a comunicação entre programas utilizando a Internet.

Atualmente as aplicações se comunicam usando Remote Procedure Calls (RPC) usando objetos como DCOM e CORBA, mas o HTTP não foi projetado para esse tipo de aplicação. O RPC apresenta problemas de compatibilidade e segurança, por isso firewall e servidores proxy normalmente bloqueam esse tipo de tráfego, o protcolo RPC roda na porta 135 TCP.

Como a melhor maneira de se comunicar entre as aplicações é através de HTTP, e o HTTP é suportado por todos os navegadores de internet e servidores foi desenvolvido o SOAP para fazer isso.

Estrutura do protocolo SOAP

Uma mensagem SOAP é um documentos XML simples que contém os seguintes elementos:

  • Um elemento Envelope, que identifica o documento XML com sendo uma mensagem SOAP.
  • Um elemento Header que contem as informações de cabeçalho.
  • Um elemento Body,  que contem as informações de chamadas e respostas.
  • Um elemento Fault, que contem erros e informações de status.

No endereço http://www.w3.org/2001/12/soap-envelope pode-se ver um exemplo de mensagem usando o SOAP

Regras de Syntaxe

Algumas das regras de sintaxe do SOAP  são as seguintes:

  • Uma mensagem SOAP deve ser codificada usando XML
  • Uma mensagem SOAP usa o SOAP Envelope namespave
  • Uma mensagem SOAP deve suar o SOAP Encoding namespace
  • Uma mensagem SOAP não contem referencia DTD.
  • Uma mensagem SOAP não contêm instruções de processamento XML
Estrutura de uma mensagem SOAP

<xml version="1.0"?>

<soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">

<soap:Header>
...
<soap:Header>

<soap:Body>
...
<soap:Fault>
...
</soap:Fault>
&lt;/soap:Body&gt

&lt;/soap:Envelope&gt;

O elemento Envelope é o primeiro elemento de uma mensagem SOAP.

O elemento SOAP Envelope

O elemento Envelope é o elemento raiz de uma mensagem SOAP, este elemento define o documento XML como sendo uma mensagem SOAP.


<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
...
Message information goes here
...
</soap:Envelope>

O namespace xmlns:soap

Este namespace define o envelope como um envelope SOAP, por isso sempre tem que ser usado esse valor ”http://www.w3.org/2001/12/soap-envelope” caso seja utilizado um valor diferente a aplicação irá gerar um erro e descartar a mensagem.

O atributo encodingStyle

Este atributo é usado para definir o tipo de dados que está sendo usado no documento. Este atributo pode aparecer em qualquer elemento SOAP, e define o conteúdo do elemento e todos os seus filhos.

Uma mensagem SOAP não tem uma codificação padrão

Sintaxe

soap:encodingStyle=”URI

O elemento Header

O elemento opcional Header contém informações especificas de uma aplicação (como autenticação e etc) relativas a mensagem SOAP.

Se o elemento Header estiver presente, ele deve ser o primeiro elemento filho do elemento Envelope.


<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">

<soap:Header>
<m:Trans xmlns:m="http://www.w3schools.com/transaction/"
soap:mustUnderstand="1">234
</m:Trans>
</soap:Header>
...
...
</soap:Envelope>

O exemplo acima contém um elemento Header com um elemento “Trans”, e um atributo “mustUnderstand” de valor 1, e o valor de “Trans” é 234.

O SOAO define 3 atributos no namespace padrão (“http://www.w3.org/2001/12/soap-envelope”), que são eles: mustUndestand, actor e encodingStyle.

Os atributos definidos no Header definem como o receptor deve processar a mensagem SOAP.

O atributo mustUndestand

O atributo mustUndestand pode ser usado para indicar se uma entrada de cabeçalho é obrigatória ou facultativa para o processamento do destinatário.

Se for setado mustUndestand = “1″ para o elemento filho do Header vai indicar que o receptor que processar o header deve reconhecer o elemento. Se o receptor não reconhecer o elemento ele irá falhar no processamento do Header.

Sintaxe

soap:mustUnderstand=”0|1″

O atributo actor

Uma mensagem ir do emissor ao receptor passando por diferentes pontos intermediários ao longo do caminho. No entanto , nem todas as partes da mensagem pode ser destinada ao ponto final, em vês disso ela pode ser destinada a um ou mais pontos intermediário no caminho da mensagem.

Sintaxe

soap:actor=”URI

Exemplo


<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">

<soap:Header>
<m:Trans xmlns:m="http://www.w3schools.com/transaction/"
soap:actor="http://www.w3schools.com/appml/">234
</m:Trans>
</soap:Header>
...
...
</soap:Envelope>

O atributo encodingStyle

O atributo encodingStyle é usado para definir o tipo de codificação que será usado no documento.  Este atributo pode aparecer em qualquer elemento SOAP, e ele será válido para o elemento e todos os filhos dele.

Uma mensagem SOAP não tem uma codificação padrão.

Sintaxe

soap:encodingStyle=”URI

O elemento Body

O elemento Body contém a mensagem SOAP que é destinada ao receptor da mensagem.

Os elementos filhos do elemento Body podem ser qualificados pela namespace.

Exemplo

<?xml version="1.0"?>

<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">

<soap:Body>
<m:GetPrice xmlns:m="http://www.w3schools.com/prices">
<m:Item>Apples</m:Item>
</m:GetPrice>
</soap:Body>

</soap:Envelope>

O exemplo acima faz a requisição do preço das maças. Verifique que os elementos m:GetPrice e Item são elementos especificos da aplicação. Estes elementos não fazem parte do namespace do SOAP.

A resposta SOAP pode ser vista abaixo:


<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">

<soap:Body>
<m:GetPriceResponse xmlns:m="http://www.w3schools.com/prices">
<m:Price>1.90</m:Price>
</m:GetPriceResponse>
</soap:Body>

</soap:Envelope>
O Elemento Fault

O  elemento opcional Fault é usado para indicar mensagem de erro.

Se este elemento estiver presente, ele aparecera como filho do elemento Body. O elemento Fault só pode aparecer uma vês em cada mensagem SOAP.

O elemento Fault tem os seguintes sub elementos:

Sub elementoDescrição
< faultcode >Um código para identificar o Fault
< faultstring >Uma explicação legível da falha.
< faultactor >Informação porque a falha aconteceu
< detail >Informações especificas relacionadas a falha

Códigos SOAP Fault

Os valores do faultcode estão definidos na tabela abaixo e são usados por ele para descrever falhas:

ErroDescrição
VersionMismatchFoi encontrado um namespace inválido para o elemento Envelope
MustUndestandUm filho imediato do elemento Header que esta com o atributo mustUndestand setado para 1 não foi compreendido.
ClientA mensagem foi incerretamente formatada ou contem informações incorretas
ServerHá um problema com o servidor e a mensagem não pode ser processada.
O protocolo HTTP

O protocolo HTTP se comunica sobre TCO/IP, um cliente HTTP se conecta a um servidor usando o TCP. Após a conexão estar estabelecida, o cliente pode enviar uma requisição HTTP:

POST /item HTTP/1.1
Host: 189.123.345.239
Content-Type: text/plain
Content-Length: 200

O servidor processa a requisição e envia uma resposta HTTP de volta ao cliente. A resposta contém um status que indica o status da requisição:

200 OK
Content-Type: text/plain
Content-Length: 200

No exemplo acima o servidor retornou o código de status 200, sendo este o código de sucesso do HTTP.

Caso o servidor não consiga interpretar a solicitação, ele pode retornar uma mensagem como está:

400 Bad Request
Content-Length: 0

SOAP HTTP Binding

Um metodo SOAP é uma request/response HTTP que cumpre as regras de codificação SOAP.

Uma requisição SOAP pode ser um HTTP POST ou um HTTP GET . O HTTP POST especifica pelo menos dois cabeçalhos: Content-Type e Content-Lenght.

Content-Type

O cabeçalho Content-Type nas requisições e respostas SOAP definem o MIME type da mensagem e opcionalmente a codificação usada no corpo do XML em requisições e respostas.

Sintaxe

Content-Type: MIMEType; charset=character-encoding

Exemplo

POST /item HTTP/1.1
Content-Type: application/soap+xml; charset=utf-8

Content-Lenght

O cabeçalho Content-Lenght usado nas requisições e respostas SOAP especificam o numero de bytes no corpo da requisição ou da resposta.

Sintaxe

Content-Length: bytes

Exemplo

POST /item HTTP/1.1
Content-Type: application/soap+xml; charset=utf-8
Content-Length: 250

Exemplo SOAP

No exemplo abaixo, a requisição GetStockPrice é enviada para o servidor. A requisição tem um parâmetro StokeName, e o parâmetro Price será retornado na resposta. O namespace para a função é definida em “http://www.example.org/stock”

Requisição SOAP:


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/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">

<soap:Body xmlns:m="http://www.example.org/stock">
<m:GetStockPrice>
<m:StockName>IBM</m:StockName>
</m:GetStockPrice>
</soap:Body>

</soap:Envelope>

Resposta SOAP:


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/2001/12/soap-envelope"
soap:encodingStyle="http://www.w3.org/2001/12/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>