Enviar post usando WebRequestMethods.Http.Post, caracteres estranhos
22/01/2010
0
no exemplo que vi a parte do código que evitaria isso seria usar UTF8, mais já tentei mudar e o resultado sempre é o mesmo, os benditos caracteres especiais, se eu enviar o post em asp classico, o mesmo post, não fica os caracteres especiais...
byteBuffer = Encoding.UTF8.GetBytes(urlEncode.ToString());
segue código completo caso possam me ajudar..
Stream requestStream = null;
WebResponse response = null;
StreamReader reader = null;
string urlRequest = "https://www.meusite.com.br/app/componente.exe";
StringBuilder urlEncode = new StringBuilder();
string paramUrlCompleta = "";
string tid = "000000";
string merchid = "lojaloja";
string order = "produtos";
string free = "";
string authenttype = "0";
paramUrlCompleta = "tid=" + tid;
paramUrlCompleta += "&merchid=" + merchid;
paramUrlCompleta += "&order=" + order;
paramUrlCompleta += "&orderid=" + orderid;
paramUrlCompleta += "&free=" + free;
paramUrlCompleta += "&price=" + price;
paramUrlCompleta += "&authenttype=" + authenttype;
paramUrlCompleta += "&damount=" + damount;
// Separando cada parâmetro
Char[] reserved = { '?', '=', '&' };
// alocando o bytebuffer
byte[] byteBuffer = null;
int i = 0, j;
while (i < paramUrlCompleta.Length)
{
j = paramUrlCompleta.IndexOfAny(reserved, i);
if (j == -1)
{
urlEncode.Append(paramUrlCompleta.Substring(i, paramUrlCompleta.Length - i));
break;
}
urlEncode.Append(paramUrlCompleta.Substring(i, j - i));
urlEncode.Append(paramUrlCompleta.Substring(j, 1));
i = j + 1;
}
// codificando em UTF8 (evita que sejam mostrados códigos malucos em caracteres especiais
byteBuffer = Encoding.UTF8.GetBytes(urlEncode.ToString());
//byteBuffer = Encoding.Default.GetBytes(urlEncode.ToString());
WebRequest request = WebRequest.Create(urlRequest);
request.Method = WebRequestMethods.Http.Post;
request.ContentType = "application/x-www-form-urlencoded";
request.ContentLength = byteBuffer.Length;
requestStream = request.GetRequestStream();
requestStream.Write(byteBuffer, 0, byteBuffer.Length);
requestStream.Close();
// 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);
String Dados = "";
// Lê cada byte para preencher meu string
while (count > 0)
{
Dados += new String(charBuffer, 0, count);
count = reader.Read(charBuffer, 0, charBuffer.Length);
}
if (requestStream != null) requestStream.Close();
if (response != null) response.Close();
if (reader != null) reader.Close();
//lbRetorno.Text = Dados;
//System.Web.HttpContext.Current.Response.Write(Dados);
System.Web.HttpContext context = System.Web.HttpContext.Current;
context.Response.Clear();
context.Response.Write(Dados);
context.Response.End();
Murilo Junqueira
Posts
22/01/2010
Murilo Junqueira
como ao abrir a janela limpar qualquer tipo de formatação de encoding etc e deixar padrão?
23/01/2010
Murilo Junqueira
16/02/2010
Eleuterio Gonzalez
Caracter estranhos em texto!
http://social.msdn.microsoft.com/Forums/pt-BR/vscsharppt/thread/9271ccaf-8def-43d2-a5bf-c5fedfdbaf68/
Encode de caracteres
http://social.msdn.microsoft.com/Forums/pt-BR/asppt/thread/01872c83-7563-4341-8dfe-79878b5c7521
Clique aqui para fazer login e interagir na Comunidade :)