Olá! Wednesday, 18 de September de 2024.



Dicas CódigoFonte.net
Tuesday, 14 de March 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(); } } } }

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:


CodigoFonte.net » Meu Mural » Competiva - Criação de Sites » Todos os Direitos Reservados © 2002/2010