Enviando solicitações SOAP usando o cliente Visual Studio 2005 (Visual Basic)
Esse recurso será removido em uma versão futura do Microsoft SQL Server. Evite usar esse recurso em desenvolvimentos novos e planeje modificar os aplicativos que atualmente o utilizam.
O exemplo neste tópico é semelhante ao exemplo fornecido em Enviando solicitações SOAP usando o cliente Visual Studio 2005 (C#). A única diferença é que este é escrito em Visual Basic. Por isso, apenas o código e as etapas necessárias à criação do exemplo são fornecidos.
Criando um exemplo de funcionamento
Por conta das muitas etapas de criação desse exemplo, o aplicativo é separado em quatro partes:
Parte 1: Executar o procedimento armazenado.
Parte 2: Executar a consulta SQL sem parâmetros.
Parte 3: Executar a consulta SQL com parâmetros.
Parte 4: Executar a função definida pelo usuário.
Cada parte fornece um conjunto de instruções. Ao término de cada parte, você pode testar o aplicativo.
Para criar a classe proxy obrigatória
Crie uma pasta no computador para o aplicativo.
No computador cliente, no grupo de programas Microsoft Visual Studio 2005, inicie o Microsoft Visual Studio 2005.
Clique em Novo Projeto.
Selecione Projetos do Visual Basic como Tipo de Projeto.
Na caixa de texto Nome, especifique NativeSOAPApp2.
Na caixa de texto Local, especifique um caminho de pasta onde você deseja salvar o projeto.
Selecione Aplicativo do Windows como modelo e clique em OK.
Na janela Gerenciador de Soluções, clique com o botão direito do mouse em Referências e selecione Adicionar Referência da Web. Outra forma de adicionar uma referência Web é no menu Projeto e selecionar Adicionar Referência da Web.
Na caixa Endereço, digite https://Server/sql?wsdl, em que Server é o nome do servidor e pressione ENTER. Se a geração de WSDL tiver êxito, você verá a descrição do ponto de extremidade. A essa altura, clique em Adicionar Referência. Isso cria as classes proxy obrigatórias para que seja possível chamar os métodos no documento WSDL.
Parte 1: Executar o procedimento armazenado.
Nesta parte, o aplicativo solicita o método Web GetCustomerInfo.
Em Form1, adicione uma caixa de texto (textBox1), um botão (button1) e uma caixa de listagem (listBox1).
Clique com o botão direito do mouse em caixa de texto e selecione Propriedades. Altere o valor Text de textBox1 para 1. Esse é o valor padrão de CustomerID.
Clique com o botão direito do mouse em button1 e selecione Propriedades.
Altere o valor da propriedade Text de button1 para ExecSP.
Altere o valor da propriedade (nome) para ExecSP.
Clique com o botão direito na caixa de listagem (listBox1) e selecione Propriedades. Altere o valor da propriedade HorizontalScrollbar para True.
Clique duas vezes em ExecSP.
Copie o código de Listagem de códigos do Visual Basic para ExecSP para essa função.
Atualize o código. Altere as referências a server pelo nome de host identificado quando o ponto de extremidade foi criado com CREATE ENDPOINT.
Salve e compile o projeto. Para obter mais informações, consulte a seção anterior, "Compilando o código".
Parte 2: Executar a consulta SQL sem parâmetros
Nesta parte, o aplicativo do cliente executa um consulta ad hoc (FOR XML) que recupera três funcionários da tabela Funcionário no banco de dados AdventureWorks2008R2.
Em Form1, na guia [Design], adicione outro botão (button1).
Clique com o botão direito do mouse nesse novo botão e selecione Propriedades.
Altere o valor da propriedade Text de button1 para ExecBatchFindAllEmps.
Altere o valor da propriedade (name) para ExecBatchFindAllEmps.
Clique duas vezes em ExecBatchFindAllEmp.
Copie o código de Listagem de códigos do Visual Basic para FindAllEmps para essa função.
Atualize o código. Altere as referências a server pelo nome de host identificado quando o ponto de extremidade foi criado com CREATE ENDPOINT.
Salve e compile o projeto. Para obter mais informações, consulte a seção anterior, "Compilando o código".
Parte 3: Executar a consulta SQL com parâmetros
Esta parte é semelhante à anterior, exceto por a solicitação SOAP da consulta ad hoc incluir um parâmetro de consulta. A consulta FOR XML recupera informações sobre o funcionário com base na ID de funcionário especificada.
No Form1, na guia [Design], adicione um botão (button1).
Clique com o botão direito do mouse nesse novo botão e selecione Propriedades.
Altere o valor da propriedade Text de button1 para ExecBatchFindAnEmp.
Altere o valor da propriedade (name) para ExecBatchFindAnEmp.
Clique duas vezes em ExecBatchFindAnEmp.
Copie o código de Listagem de códigos do Visual Basic para FindAnEmp para essa função.
Atualize o código. Altere as referências a server pelo nome de host identificado quando o ponto de extremidade foi criado com CREATE ENDPOINT.
Salve e compile o projeto. Para obter mais informações, consulte a seção anterior, "Compilando o código".
Parte 4: Executar a função definida pelo usuário
Nesta parte, o aplicativo cliente envia uma solicitação SOAP para o método Web UDFReturningScalar. Esse método Web corresponde a uma função definida pelo usuário que retorna um valor inteiro.
No Form1, na guia [Design], adicione outro botão (button1).
Clique com o botão direito do mouse nesse novo botão e selecione Propriedades.
Altere o valor da propriedade Text de button1 para ExecUDFReturningScalar e
Altere o valor da propriedade (name) para ExecUDFReturningScalar.
Clique duas vezes em ExecUDFReturningScalar.
Copie o código de Listagem de códigos do Visual Basic para ExecUDF para essa função.
Atualize o código. Altere as referências a server pelo nome de host identificado quando o ponto de extremidade foi criado com CREATE ENDPOINT.
Salve e compile o projeto. Para obter mais informações, consulte a seção anterior, "Compilando o código".
Como o ponto de extremidade especifica autenticação integrada, a seguinte linha é exibida no código:proxy.Credentials = System.Net.CredentialCache.DefaultCredentials.
Caso você use a autenticação do SQL Server, recomendamos que remova essa linha e a substitua pelo código que implementa cabeçalhos WS-Security nas credenciais de autenticação com base no SQL Server. Para obter mais informações, consulte Autenticação de SQL Server por meio de SOAP.
Observação |
---|
Caso esteja usando a autenticação do SQL Server ou a autenticação básica, o SQL Server exige que você use o protocolo SSL na transmissão criptografada segura das credenciais do usuário que, caso contrário, estariam visíveis como texto não criptografado. Para obter mais informações sobre como habilitar o protocolo SSL para usar pontos de extremidade HTTP, consulte Configurando um certificado para ser usado no SSL. |
Compilando o código
O SQL Server instala o .NET Framework 2.0 como parte de seu processo de instalação. Essas instruções de compilação usam o último .NET Framework (trata-se do maior número na pasta \WINDOWS\Microsoft.NET\Framework).
Para compilar o código
- Salve o projeto inteiro.
Abra um prompt de comando e localize a pasta onde o projeto foi salvo.
Nessa pasta, copie o arquivo Reference.vb da subpasta Web Reference\Server (por exemplo, copie "Web Reference\Server\Reference.vb"). Os arquivos Form1.vb e Reference.vb devem estar na mesma pasta.
Compile o código e especifique o nome do arquivo executável (.exe). Por exemplo, se o nome do executável fosse NativeSOAPApp2.exe, a linha de comando seria a seguinte:
\WINDOWS\Microsoft.NET\Framework\v2.0.xxxxx\vbc.exe /out:NativeSOAPApp2.exe /r:System.dll /r:System.Data.dll /r:System.Xml.dll /r:System.Web.Services.dll /r:Microsoft.VisualBasic.dll /r:System.Drawing.dll /r:System.Windows.Forms.dll /m:Form1 Form1.vb Reference.vb
xxxxx é o número da pasta correspondente à versão do .NET Framework.
Isso cria o executável (NativeSOAPApp2.exe) no diretório atual.
Observação Caso esteja usando uma versão mais antiga do .NET Framework, você pode receber um erro em tempo de execução. Nesse caso, tente atualizar o procedimento armazenado GetCustomerInfo adicionando a cláusula FOR XML AUTO ao final da instrução SELECT como mostrado:
SELECT TOP 3 SalesOrderID, OrderDate FROM SalesOrderHeader WHERE CustomerID = @CustomerID FOR XML AUTO
Os resultados da execução do procedimento armazenado são exibidos na caixa de listagem.
Consulte também