Array
(
)

Consumir WebService Rest com CSharp

Riechelmann
   - 11 mar 2015

Bom Dia
Estou com uma dúvida como conseguir consumir um WebService Rest em csharp, nos exemplos que estou achando na internet não consegui entender o funcionamento, esse consumo irá ser efetuado por uma CLR no Sql Server como uma função, deverei utilizar o .net 2.0 pois é o que o Sql Server 2008 utiliza, se compilar com uma versão superior apresenta erro ao criar a função no SQL, segue o código que estou implementando para o Consumo do Serviço.
#Código

[Microsoft.SqlServer.Server.SqlFunction]
    public static SqlString EnviarEmailTransacional(SqlString pXml, SqlString pHtmlEmail)
    {
        /*
          <EnvioEmail> 
                <auth>123</auth>
                <assuntoEnvio></assuntoEnvio>
                <nomeRemetente></nomeRemetente>
                <emailRemetente></emailRemetente>
                <emailDestinatario></emailDestinatario>
                <id></id>
          </EnvioEmail>
        */
        string lAccept = @"Accept=application/xml";
        string lAuth = @"X-Auth=";
        string lAssuntoEnvio = "header_subject={0}";
        string lNomeRemetente = "header_from_name={0}";
        string lEmailRemetente = "header_from_email={0}";
        string lEmailRemetenteResposta = "header_reply_email={0}";
        string lEmailDestinatario = "recipient_email={0}";        
        string lID = "";
        string lBodyHtml = String.Format("body_html_message={0}",pHtmlEmail);

        
        string uri = @"http://restful2.virtualtarget.com.br/index.dma/Restful/TransactionalCampaign/{0}/?callback=mostraDados&{1}";
        string uriChamada = String.Format("{0}&{1}&{2}&{3}&{4}&{5}&{6}&{7}",
                                          lAuth,
                                          lEmailDestinatario,
                                          lEmailRemetente,
                                          lEmailRemetenteResposta,
                                          lAssuntoEnvio,
                                          lNomeRemetente,
                                          lBodyHtml,
                                          lAccept);        
        string uriFinal = String.Format(uri,lID,uriChamada);
        uriFinal = String.Format(uri, "");

        WebClient lWClient = new WebClient();

        string lResposta = lWClient.DownloadString(uriFinal);
        
        // Put your code here
        return new SqlString(lResposta);
    }