CódigoFonte.net Inicial Anuncie Buscar códigos Fale conosco Olá Visitante - Sábado, 05 de Julho de 2008.



Códigos
ASP.NET
ASP
Cold Fusion
CGI
C#
JavaScript
Delphi
PHP
VB.NET
VBScript
XML
Assistentes
Favoritos
Botão Direito
Confirm Box
Datas
Caixa de Alerta
Transições
Cores em Hexa
Links
Ver + Detalhes
Tutoriais/Dicas
ASP
Banco de dados
BLOGs
CGI/Perl
C# (CSharp)
CSS
Delphi
.NET
Flash
Front-Page
HTML
JavaScript
PHP
Python
Web
Web 2.0
Windows
Serviços
Mural
Contadores
Web Objects
GamesDaNet
Chama MSN
Jogos Online
Feed RSS
Expediente
Anuncie
Fórum
Bate-papo
Orkut
Divulgue-nos
Privacidade
Contato
Parceiros
Fontes Gratis
Br-Designer.com
CompreDeTudo
Iscambo.com
Garu Downloads
Oficina da Net
Seus Sonhos
.NET User Group
Piadas online
Casa dos Wm
HTML Staff
BaixaTube




Dicas CódigoFonte.net
Terça Feira, 14 de Março de 2006

Como enviar uma requisição do tipo POST em asp.net?

Segue o exemplo todo comentado, é só copiar e se precisar, fazer alguns ajustes para adequar às suas necessidades.

Testado e funcionando com .NET 2.0

using System;
using System.Net;
using System.IO;
using System.Text;
using System.Web; // não esqueça de fazer referência a dll em seu projeto

namespace Microsoft.Samples.QuickStart.HowTo.Net.WebRequests
{
    static class ClientPOST
    {
        public static void Main(string[] args)
        {
            // Enviando para a página do terra os parametros pelo método post
            GetPage("http://www.terra.com.br", "parametro1=valor1&parametro2=valor2");

            Console.WriteLine();
            Console.WriteLine("Pressione algo para continuar...");
            Console.ReadLine();
        }

        private static void GetPage(String url, String query)
        {
            // Declarações necessárias
            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);

                StringBuilder Dados = new StringBuilder();

                // Lê cada byte para preencher meu stringbuilder
                while (count > 0)
                {
                    Dados.Append(new String(charBuffer, 0, count));
                    count = reader.Read(charBuffer, 0, charBuffer.Length);
                }

                // Imprimo o que recebi
                Console.Write(Dados);
            }
            catch (Exception e)
            {
                // Ocorreu algum erro
                Console.Write("Erro: " + e.Message);
            }
            finally
            {
                // Fecha tudo
                if (requestStream != null)
                    requestStream.Close();
                if (response != null)
                    response.Close();
                if (reader != null)
                    reader.Close();
            }
        }
    }
}

Veja mais

Comentários do artigo [Novo comentário]

Nenhum comentário, seja o primeiro a comentar.
Para adicionar um comentário você deve efetuar o login
Gostou do CódigoFonte.net? Quer indicar a um amigo?
Preencha os campos a seguir.
Seu Nome:
Seu E-mail:
E-mail de seu Amigo:



» Busca específica

BuscaPé, líder em comparação de preços na América Latina





» Notebooks?
» Procurando o que comprar? CompreDeTudo.com


Melhor Visualizado com
800x600 de Resolução
CodigoFonte.net » CodigoFonte.eti.br » CompreDeTudo.com » MeuMural.com.br » Todos os Direitos Reservados © 2002/2008