Categoria Dicas C# (CSharp) - Como enviar uma requisição do tipo POST em asp.net?

Posted by webmaster | C# (CSharp) |

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 .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();
}
}
}
}

Tags: ,

Categoria Dicas C# (CSharp) - Fazendo uma requisição do tipo GET em asp.net?

Posted by webmaster | C# (CSharp) |

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

Este é bem mais simples pois estou enviando uma requisição do tipo GET e não precisa que atribuído nenhum ContentType à página, como foi feito no exemplo de envio pela requisição POST.

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 .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“);

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

private static void GetPage(String url)
{
WebResponse response = null;
StreamReader reader = null;
try
{
// Cria o request da url
WebRequest request = WebRequest.Create(url);
// recebe os dados
response = request.GetResponse();
Stream responseStream = response.GetResponseStream();

// Exibe os caracteres especiais
System.Text.Encoding encoding = System.Text.Encoding.Default;

reader = new StreamReader(responseStream, encoding);

// Aloca o buffer
Char[] buffer = new Char[256];
int count = reader.Read(buffer, 0, buffer.Length);

// Imprime na tela o que recebi
while (count > 0)
{
Console.Write(new String(buffer, 0, count));
count = reader.Read(buffer, 0, buffer.Length);
}

Console.WriteLine(”");
}
catch (Exception e)
{
Console.WriteLine(”ERRO: ” + e.Message);
}
finally
{
// Fecho tudo
if (response != null)
response.Close();
if (reader != null)
reader.Close();
}
}
}
}

Tags: ,

Categoria Dicas C# (CSharp) - MatrixReporter for .NET

Posted by webmaster | C# (CSharp) |

O assembly MatrixReporter foi desenvolvido em C#, baseado em um ótimo componente pra Delphi, chamado JLPSAY. Usando o MatrixReporter você pode imprimir em impressoras matriciais informando Linha e Coluna do texto a ser impresso, algo parecido com o tínhamos com o saudoso Clipper. Uma diferença em relação ao componente original, é que o MatrixReporter traz consigo uma classe que encapsula os códigos básicos de formatação de impressoras Epson, como negrito, itálico, sublinhado etc.

Clique para baixar a dll

Aqui está um trecho do demo incluso. Veja como é simples seu uso:

lCodes := EpsonCodes.Create;
lPrinter := Reporter.Create;
with lPrinter, lCodes do
begin
Output := ‘LPT1′; { here you could specify a remote printer, like : \\computer1\printer1}
StartJob;
PrintText(01,01,’Demo for ‘ + BoldOn + ‘MatrixReporter’ + BoldOff + ‘ for .NET’);
PrintText(02,01,’Now priting to line 5, column 5 condensed text: ‘);
PrintText(05,05,CondensedOn + ‘Greate ! Isnt it ? ‘ + CondensedOff);
PrintText(06,01,’This component is free, just for you !’);
PrintText(08,01,’Any comment, please email me: ‘ + ItalicOn + ‘paulo_quicoli@hotmail.com ‘ + ItalicOff);
PrintText(12,20,’THANK YOU FOR TRYING THIS !’);
PutText(Eject);
EndJob;
if ckPreview.Checked then
PreviewJob
else
PrintJob;
end;

Tags:
Page 5 of 6Primeiro...«23456»