Fórum Requisições HTTP #6448
03/06/2009
0
Este sistema utiliza requisições HTTP (POST e GET) para uma URL.
Em C# com Windows.Forms estamos utilizando HttpWebRequest/HttpWebResponse para fazer isto.
Tudo OK!
O único problema é que temos uma URL que examina a requisição e verifica se a mesma foi enviada através do mesmo local na Web. Isso retorna uma mensagem de erro pelo site da URL...
No sistema em Delphi utilizamos alterar o Host do cabeçalho HTTP colocando o mesmo da URL e funciona normalmente.
O problema é que em C# o HttpWebRequest não permite a alteração deste parâmetro do Header.
Como fazer então?
Valter Ferreira
Curtir tópico
+ 0Posts
04/06/2009
Luiz Maia
Passos para reproduzir o erro: using System;
using System.Net;
using System.IO;
class Program
{
public static void Main(string[] args)
{
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://208.77.186.166/Default.aspx");
request.Headers["Host"] = "www.example.com"; // This line throws an ArgumentException
using (WebResponse response = request.GetResponse())
{
using (TextReader reader = new StreamReader(response.GetResponseStream()))
{
string line;
while ((line = reader.ReadLine()) != null)
Console.WriteLine(line);
}
}
}
} Resultado da excessão: ArgumentException thrown.
The 'Host' header cannot be modified directly.
Parameter name: name Espero ter ajudado.Qualquer coisa me avisem. AbraçosAttLuiz Maia
Gostei + 0
04/06/2009
Valter Ferreira
Sim, o header em questão (Host) não pode ser alterado manualmente.
Isso já está escrito no próprio texto que você enviou "Host: Set by the system to the current host information.".
Ví que existem vários componentes de terceiros que permitem, logo, penso que existe alguma maneira de fazer isso nativamente no VS2008 porque é uma tarefa usual para quem utiliza estes recursos.
Qual seria uma alternativa?
Gostei + 0
05/06/2009
Luiz Maia
Gostei + 0
05/06/2009
Luiz Maia
Gostei + 0
07/06/2009
Luiz Maia
Gostei + 0
08/06/2009
Valter Ferreira
Não podemos alterar nada na configuração nem do cliente e nem do servidor. Em Delphi eu só mudo o cabeçalho.
O problema é que encontrei exemplos de requisições GET/POST usando sockets, permitindo assim alterar o cabeçalho como eu queira... Infelizmente, por exemplo, perco as funcionalidades de gerenciamento de cookies. E para tê-la, devo implementar... Mas isso não é possível pelo custo e benefício.
Gostei + 0
09/06/2009
Luiz Maia
Gostei + 0
09/06/2009
Valter Ferreira
O que eu preciso é fazer com que uma aplicação web pense que estou enviando uma requisição dela própria.
Por exemplo, se eu tenho um formulário teste.aspx e ele envia por POST informações para http://www.exemplo.com.br/form.aspx o form.aspx só aceitará estes dados se o teste.aspx esteja em www.exemplo.com.br. Assim, se eu disparo um POST através de um programa feito em Windows.Forms para http://www.exemplo.com.br/form.aspx deverei mudar o cabeçalho host para exemplo.com.br, pois o mesmo irá com o IP da máquina ou servidor que encontra-se minha aplicação.
Gostei + 0
09/06/2009
Luiz Maia
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)