Lembrando que ela resgata qualquer contéudo mesmo se ele não for xml(podendo ele ser HTML).
//necessario adicionar as classes abaixo
using System.Net;
using System.Text;
using System.IO;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;
///
/// Summary description for RequisicaoPagina
///
public class RequisicaoPagina
{
public RequisicaoPagina()
{
//
// TODO: Add constructor logic here
//
}
///
/// Posta dados para uma página e pega o retorno.
/// Passa somente um parametro.
/// Utilizado principalmente com serviços que recebem parametros por POST e retornam um XML.
/// Estes serviços não são WebServices.
/// Nome do parametro a ser postado
/// Valor do Parametro a ser postado
///
public static string EnviarDadosPost(string Url, string Parametro, string Valor)
{
// Usado para receber o xml
StringBuilder sb = new StringBuilder();
// Usado para cada operação de leitura da saída
byte[] buf = new byte[8192];
// É necessário caso a página esteja em ssl
ServicePointManager.ServerCertificateValidationCallback += AcceptAllCertificatePolicy;
//criando o request
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url);
request.Credentials = CredentialCache.DefaultCredentials;
request.Method = "POST";
//Adicionando os parametros a serem postados
string postData = Parametro+"="+Valor;
byte[] byteArray = System.Text.Encoding.GetEncoding("iso-8859-1").GetBytes(postData);
// Tipo do conteudo a ser requisitado
request.ContentType = "application/x-www-form-urlencoded";
// Tamanho do conteudo da requisição
request.ContentLength = byteArray.Length;
// criando stream da requisição
Stream dataStream = request.GetRequestStream();
// armazendo os dados da requisição no stream
dataStream.Write(byteArray, 0, byteArray.Length);
// fechando a requisição
dataStream.Close();
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream resStream = response.GetResponseStream();
string tempString = null;
int count = 0;
do
{
// Carrega o buffer com os dados enviados
count = resStream.Read(buf, 0, buf.Length);
// Se contiver dados carregará o stringBuilder
if (count != 0)
{
// Converte os Bytes para caracteres ASCII
//tempString = Encoding.ASCII.GetString(buf, 0, count);
tempString = System.Text.Encoding.GetEncoding("iso-8859-1").GetString(buf, 0, count);
// Adiciona ao stringBuilder
sb.Append(tempString);
}
}
while (count > 0); // verifica se existe mais dados para ler
string Retorno = sb.ToString();
return Retorno;
}
}