Códigofonte.net: Como enviar uma requisição do tipo POST em ASP.NET
Veja nessa dica, como enviar uma requisição do tipo Post em ASP.NET 2.0.
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¶metro2=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();
}
}
}
}
Conheça o nosso Parceiro Códigofonte.net
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo