Array
(
)

Requisição POST XML

Thais Ribeiro
   - 19 ago 2015

Boa tarde pessoal,
Posso pedir socorro? Estou desesperada, já rodei a internet em busca de uma solução e não encontrei :/ vou explicar o que está acontecendo: Estou tentando fazer uma requisição via POST usando httpwebrequest assim:
#Código
public DataSet BuscaRetornoXMLSite(ParametrosSite site,
ParametrosEntrada entrada)
{
WebRequest requisicao = null;
WebResponse resposta = null;
StreamReader leitorConteudo = null;
Stream dataStream = null;
DataSet ds;
StringBuilder parametros;
string status;
byte[] byteArray;

try
{
parametros = new StringBuilder();
if (entrada.codigo_transacao > -1) { parametros.Append(String.Format(Constantes._CODIGO_TRANSACAO, entrada.codigo_transacao)); }
if (entrada.loja_primaria != null) { parametros.Append(String.Format(Constantes._LOJA_PRIMARIA, entrada.loja_primaria)); }
if (entrada.nome_primario != null) { parametros.Append(String.Format(Constantes._NOME_PRIMARIO, entrada.nome_primario)); }
if (entrada.senha_primaria != null) { parametros.Append(String.Format(Constantes._SENHA_PRIMARIA, entrada.senha_primaria)); }
if (entrada.compra > -1) { parametros.Append(String.Format(Constantes._COMPRA, entrada.compra)); }
if (entrada.produto != null) { parametros.Append(String.Format(Constantes._PRODUTO, entrada.produto)); }
if (entrada.valor > -1) { parametros.Append(String.Format(Constantes._VALOR, entrada.valor.ToString(new CultureInfo(Constantes.CULTURA_XML)))); }
if (entrada.ddd != null) { parametros.Append(String.Format(Constantes._DDD, entrada.ddd)); }
if (entrada.fone != null) { parametros.Append(String.Format(Constantes._FONE, entrada.fone)); }
if (entrada.id_terminal > -1) { parametros.Append(String.Format(Constantes._ID_TERMINAL, entrada.id_terminal)); }
if (entrada.uf_terminal != null) { parametros.Append(String.Format(Constantes._UF_TERMINAL, entrada.uf_terminal)); }
if (entrada.dataHoraOperacao > -1) { parametros.Append(String.Format(Constantes._DATAHORAOPERACAO, entrada.dataHoraOperacao)); }
if (entrada.versao > -1) { parametros.Append(String.Format(Constantes._VERSAO, entrada.versao.ToString(new CultureInfo(Constantes.CULTURA_XML)))); }
if (entrada.cod_retorno > -1) { parametros.Append(String.Format(Constantes._COD_RETORNO, entrada.cod_retorno)); }
if (entrada.dataConsulta != null) { parametros.Append(String.Format(Constantes._DATACONSULTA, entrada.dataConsulta)); }
if (entrada.cod_online > -1) { parametros.Append(String.Format(Constantes._COD_ONLINE, entrada.cod_online)); }
parametros.Remove(parametros.ToString().IndexOf("&"), 1);
//Cria uma requisição usando uma URL que pode receber um post.
requisicao = (WebRequest)WebRequest.Create(site.endereco);
//Seta Credenciais
requisicao.Proxy = site.proxy;
requisicao.Credentials = site.credenciais;
//Seta a propriedade Método do pedido de POST.
requisicao.Method = site.metodo;
byteArray = Encoding.UTF8.GetBytes(parametros.ToString());
//Seta a propriedade ContentType do WebRequest.
requisicao.ContentType = "application/xml;charset=ISO-8859-1";
//Seta a propriedade ContentLength do WebRequest.
requisicao.ContentLength = byteArray.Length;
//Obtem o fluxo da solicitação.
dataStream = requisicao.GetRequestStream();
//Escreve os dados para o fluxo de solicitação.
dataStream.Write(byteArray, 0, byteArray.Length);
//Fecha o objeto Stream.
dataStream.Close();
//Obtem a resposta.
resposta = requisicao.GetResponse();
//Exibir o status.
status = ((HttpWebResponse)resposta).StatusDescription;
//Obtem o conteúdo retornado pelo servidor.
dataStream = resposta.GetResponseStream();
//Abre um stream utilizando um StreamReader para fácil acesso.
leitorConteudo = new StreamReader(dataStream, Encoding.GetEncoding(Constantes.ENCODING_XML));
//Popula DataSet
ds = new DataSet("DataSetConteudoXML");
//GeraLogErro.Erro("XML SITE", leitorConteudo.ReadToEnd());
ds.ReadXml(leitorConteudo);
return ds;
}
catch (Exception ex)
{ throw ex; }
finally
{
if (leitorConteudo != null)
leitorConteudo.Close();
if (dataStream != null)
dataStream.Close();
if (resposta != null)
resposta.Close();
leitorConteudo = null;
dataStream = null;
resposta = null;
}
}

Mas na hora que dou um resposta GetRequestStream() ele gera o seguinte erro:
#Código
'dataStream.Length' threw an exception of type 'System.NotSupportedException'
'dataStream.Position' threw an exception of type 'System.NotSupportedException'

Se alguém conseguiu resolver, me ajudem por favor!
Obrigada!