segunda-feira, 15 de fevereiro de 2010

C# SMS

   Para quem estiver procurando uma forma de enviar SMS via aplicação, e está procurando uma empresa para o mesmo, indico a Human, pois já desenvolvi aplicações utilizando as soluções de comunicações da mesma, e tem atendido e respondido as expectativas, para acessar e buscar o contato este é o site: http://www.human.com.br/sms/index.php.
   Para ajuda-los, eu criei uma classe SMS.cs, onde a mesma contém está função, que a própria Human auxilia no desenvolvimento caso precisem, a mesma fornece um manual com as explicações necessárias ao desenvolvimento da aplicação, mas para envio de uma lista por exemplo temos:

Using necessários na classe:

using System.Linq;
using System.Text;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Net;
using System.IO;

Função:

        public string GetPage(String Lista)
        {//CSV&list
            String url = "http://fornecido pela Empresa Human";
//define a empresa a senha e o tipo de envio, no caso uma lista
            String query = "dispatch=sendMultiple&account=empresa&code=senha&type=E&list=" + Lista;
            // Declarações necessárias, Empresa HUMAN
            Stream requestStream = null;
            WebResponse response = null;
            StreamReader reader = null;
            try
            {
                WebRequest request = WebRequest.Create(url);
                request.Method = WebRequestMethods.Http.Post;

                // Neste ponto, você está setando a propriedade ContentType da página 
                // para urlencoded para que o comando POST seja enviado corretamente 
                request.ContentType = "application/x-www-form-urlencoded";

                StringBuilder urlEncoded = new StringBuilder();

                // Separando cada parâmetro 
                Char[] reserved = { '?', '=', '&' };

                // alocando o bytebuffer 
                byte[] byteBuffer = null;

                // caso a URL seja preenchida 
                if (query != null)
                {
                    int i = 0, j;
                    // percorre cada caractere da url atraz das palavras reservadas para separação 
                    // dos parâmetros 
                    while (i < query.Length)
                    {
                        j = query.IndexOfAny(reserved, i);
                        if (j == -1)
                        {
                            urlEncoded.Append(query.Substring(i, query.Length - i));
                            break;
                        }
                        urlEncoded.Append(query.Substring(i, j - i));
                        urlEncoded.Append(query.Substring(j, 1));
                        i = j + 1;
                    }
                    // codificando em UTF8 (evita que sejam mostrados códigos malucos em caracteres especiais 
                    byteBuffer = Encoding.UTF8.GetBytes(urlEncoded.ToString());

                    request.ContentLength = byteBuffer.Length;
                    requestStream = request.GetRequestStream();
                    requestStream.Write(byteBuffer, 0, byteBuffer.Length);
                    requestStream.Close();
                }
                else
                {
                    request.ContentLength = 0;
                }

                // Dados recebidos 
                response = request.GetResponse();
                Stream responseStream = response.GetResponseStream();

                // Codifica os caracteres especiais para que possam ser exibidos corretamente 
                System.Text.Encoding encoding = System.Text.Encoding.Default;

                // Preenche o reader 
                reader = new StreamReader(responseStream, encoding);

                Char[] charBuffer = new Char[256];
                int count = reader.Read(charBuffer, 0, charBuffer.Length);

                String Dados = "";

                // Lê cada byte para preencher meu string
                while (count > 0)
                {
                    Dados += new String(charBuffer, 0, count);
                    count = reader.Read(charBuffer, 0, charBuffer.Length);
                }
                return Dados;
            }
            catch (Exception ex)
            {
                //// Ocorreu algum erro 
                //Console.Write("Erro: " + e.Message);
                return "";
                throw ex;
            } // END: catch 

            finally
            {
                // Fecha tudo 
                if (requestStream != null) requestStream.Close();
                if (response != null) response.Close();
                if (reader != null) reader.Close();
            } // END: finally
        }


Att Fernando Valota

Nenhum comentário:

Postar um comentário