Share via


Enviando solicitações SOAP usando o cliente Visual Studio 2005 (C#)

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.

Este tópico descreve um aplicativo de exemplo no qual um cliente Visual Studio 2005 envia solicitações SOAP a uma instância do SQL Server e processa a resposta SOAP. As solicitações são enviadas para os métodos de ponto de extremidade criados em Aplicativos de exemplo para enviar solicitações de XML Web Services Nativos.

Para usar esse aplicativo, recomendamos que você se familiarize com os conceitos e procedimentos fornecidos em Definindo o servidor para escutar solicitações dos XML Web Services Nativos e Gravando aplicativos cliente.

ObservaçãoObservação

Esse aplicativo de exemplo necessita de uma configuração inicial. Antes de prosseguir, siga as etapas descritas em Aplicativos de exemplo para enviar solicitações de XML Web Services Nativos.

Enviando solicitações SOAP

Nesse aplicativo, você configura um formulário com os botões e as caixas de texto necessários para enviar solicitações SOAP ao ponto de extremidade.

Quando uma solicitação SOAP é enviada ao procedimento armazenado GetCustomerInfo, o valor de Customer ID fornecido em uma caixa de texto é passado como um parâmetro de entrada. Se nenhum valor for especificado na caixa de texto, pressupõe-se que a cadeia de caracteres esteja vazia. Os clientes com uma cadeia de caracteres vazia como valor de CustomerID serão retornados. Se NULL for especificado, serão retornados os clientes cujo CustomerID for NULL. Observe que quando isso ocorre, o atributo xsi:nil = 'true' é adicionado automaticamente à solicitação SOAP para indicar um valor de parâmetro NULL.

O procedimento armazenado GetCustomerInfo é criado para mostrar como controlar os parâmetros de entrada e de saída, as mensagens de erro e os resultados. O aplicativo também envia solicitações SOAP para a função definida pelo usuário. Além disso, envia solicitações SOAP para as seguintes consultas ad hoc:

  • Consulta SELECT para recuperar todos os funcionários.

  • Consulta SELECT para recuperar um funcionário cujo ID é fornecido como entrada.

Processando as respostas SOAP

Quando os resultados de uma solicitação SOAP são retornados como uma matriz de objetos, o aplicativo cliente identifica o tipo de cada objeto na matriz e processa o objeto de acordo. O aplicativo exibe as seguintes informações sobre cada elemento da matriz de objetos:

  • O tipo de dados do valor no elemento da matriz.

  • O valor: conjunto de resultados, código de retorno, valores de parâmetro de saída etc.

Criando um exemplo de funcionamento

Em virtude das muitas etapas que você deve seguir para criar este exemplo, o aplicativo se divide em cinco partes:

  • Parte 1: Executar o procedimento armazenado GetCustomerInfo

  • Parte 2: Executar SP

  • Parte 3: Executar consulta SQL sem parâmetros

  • Parte 4: Executar consulta SQL com parâmetros

  • Parte 5: 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.

Parte 1: Executar o procedimento armazenado GetCustomerInfo

  1. No computador cliente, no grupo de programas Microsoft Visual Studio 2005, inicie Visual Studio 2005.

  2. Clique em Novo Projeto.

  3. Selecione Projetos do Visual C# como Tipo de Projeto.

  4. Especifique NativeSOAPApp1 como o nome do projeto.

  5. Especifique o local onde você deseja salvar o projeto.

  6. Selecione Aplicativo do Windows como modelo e clique em OK.

  7. Na janela Gerenciador de Soluções, clique com o botão direito em Referências e selecione Adicionar Referência Web. Outro modo de adicionar uma referência Web é selecionar Adicionar Referência Web no menu Projeto.

  8. Na caixa Endereço, digite https://Server/sql?wsdl e pressione ENTER. Observe que você deve digitar o nome do servidor na URL.

  9. 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 2: Executar SP

  1. No menu Exibir, clique em Caixa de Ferramentas para abrir a caixa de ferramentas no painel Form1.cs [Design]. Como opção, é possível pressionar CTRL + ALT + X para abrir a caixa de ferramentas.

  2. Em Form1, adicione uma caixa de texto (textBox1), um botão (button1) e uma caixa de listagem (listBox1).

  3. Clique com o botão direito do mouse na caixa de texto e selecione Propriedades. Altere o valor de Text de textBox1 para 1. Esse é o valor padrão de CustomerID.

  4. Clique com o botão direito do mouse em button1 e selecione Propriedades.

    1. Altere o valor da propriedade Text de button1 para ExecSP.

    2. Altere o valor da propriedade (nome) para ExecSP.

  5. Clique com o botão direito na caixa de listagem (listBox1) e selecione Propriedades. Altere o valor da propriedade HorizontalScrollbar para True.

  6. Clique duas vezes em ExecSP.

  7. Copie o código de Listagem de código C# para ExecSP para esta função.

  8. 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.

  9. Salve e compile o projeto. Para obter mais informações, consulte a seção anterior, "Compilando o código".

Parte 3: Executar consulta SQL sem parâmetros

Esta parte do aplicativo cliente executa uma consulta ad hoc (consulta FOR XML) que recupera os funcionários da tabela Employee no banco de dados AdventureWorks.

  1. Em Form1, na guia [Design], adicione outro botão (button1).

  2. Clique com o botão direito do mouse nesse novo botão e selecione Propriedades.

    1. Altere o valor da propriedade Text de button1 para BatchQueryFindAllEmps.

    2. Altere o valor da propriedade (name) para BatchQueryFindAllEmps.

  3. Clique duas vezes em BatchQueryFindAllEmps.

  4. Copie o código de Listagem de código C# para BatchQueryFindAllEmps nesta função.

  5. 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.

  6. Salve e compile o projeto. Para obter mais informações, consulte a seção anterior, "Compilando o código".

Parte 4: Executar 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.

  1. Em Form1, na guia [Design], adicione um botão (button1).

  2. Clique com o botão direito do mouse nesse novo botão e selecione Propriedades.

    1. Altere o valor da propriedade Text de button1 para BatchQueryFindAnEmp.

    2. Altere o valor da propriedade (name) para BatchQueryFindAnEmp.

  3. Clique duas vezes em BatchQueryFindAnEmp.

  4. Copie o código da Listagem de código C# para BatchQueryFindAnEmp para esta função.

  5. 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.

  6. Salve e compile o projeto. Para obter mais informações, consulte a seção anterior, "Compilando o código".

Parte 5: 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.

  1. Em Form1, na guia [Design], adicione um botão (button1).

  2. Clique com o botão direito do mouse nesse novo botão e selecione Propriedades.

    1. Altere o valor da propriedade Text de button1 para ExecUDFReturningScalar.

    2. Altere o valor da propriedade (name) para ExecUDFReturningScalar.

  3. Clique duas vezes em ExecUDFReturningScalar.

  4. Adicione o código em Listagem de código C# para ExecUDFReturningScalar a esta função.

  5. 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.

  6. Salve e compile o projeto. Para obter mais informações, consulte a seção anterior, "Compilando o código".

  7. Clique em ExecUDFReturningScalar. O valor de retorno da função definida pelo usuário é exibido na caixa de listagem.

Pelo fato de o ponto de extremidade especificar a autenticação integrada, a seguinte linha aparece no código: proxy.Credentials = System.Net.CredentialCache.DefaultCredentials;

Se você optar pela autenticação do SQL Server, recomendamos remover essa linha e substituí-la pelo código que implementa os cabeçalhos de WS-Security para fornecer credenciais de autenticação baseada em SQL Server. Para obter mais informações, consulte Autenticação de SQL Server por meio de SOAP.

ObservaçãoObservaçã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 a versão mais recente do .NET Framework. (É o número mais alto na pasta \WINDOWS\Microsoft.NET\Framework.)

Para compilar o código de exemplo

  1. Salve o projeto inteiro.

  2. Abra o prompt de comando e localize a pasta onde o projeto foi salvo.

  3. Nesta pasta, copie o arquivo Reference.cs da subpasta Web Reference\Server. (Por exemplo, copie "Web Reference\Server\Reference.cs".) Os arquivos Form1.cs e Reference.cs devem estar na mesma pasta.

  4. Compile o código e especifique o nome do arquivo executável (.exe). Por exemplo, se o nome do executável for NativeSOAPApp1.exe, a linha de comando será a seguinte:

    \WINDOWS\Microsoft.NET\Framework\v2.0.xxxxx\csc.exe /out:NativeSOAPApp1.exe Form1.cs Reference.cs

    xxxxx é o número da pasta que corresponde à versão do .NET Framework.

    Isso cria o executável (NativeSOAPApp1.exe) no diretório atual.

Se você usa uma versão anterior do .NET Framework, 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.