Tuesday, 14 de March de 2006
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();
}
}
}
}
Nenhum comentário, seja o primeiro a comentar.
Para adicionar um comentário você deve efetuar o
login