IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

[C#] Problème avec HttpWebRequest


Sujet :

ASP.NET

  1. #1
    Membre du Club Avatar de Manralf
    Inscrit en
    Août 2005
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 43
    Points : 48
    Points
    48
    Par défaut [C#] Problème avec HttpWebRequest

    J'aimerais afficher dans un iframe une page ASP 3.0. Comme elle est assez longue à s'afficher, j'ai crée une page ASPX qui récupère le flux HTTP de la page précédente et utilise le système de cache d'ASP.NET.
    Voilà le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create( string.Format( "MaPage.asp?date={0:dd/MM/yyyy}", DateTime.Today ) );
    using( Stream data = request.GetRequestStream() )
    {
        using( StreamReader reader = new StreamReader( data ) )
        {
            Response.Write( reader.ReadToEnd() );
        }
    }
    Quand je fais ça, j'ai une System.Net.ProtocolViolationException : "Impossible d'envoyer un corps de contenu avec ce type de verbe."

    Merci pour votre aide

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 835
    Points : 1 046
    Points
    1 046
    Par défaut
    hmmm je ne suis pas bien sur de ce qui se passe, mais j'ai l'impression que tu essayes d'ecrire dans le Response une page complete alors qu'asp.net a deja ecrit le debut de la page en qque sorte. Essaye de debugger et voir ce qu'il ya dans ton reader, peut etre que qque chose comme ça marcherait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Response.Clear();
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create( string.Format( "MaPage.asp?date={0:dd/MM/yyyy}", DateTime.Today ) );
    using( Stream data = request.GetRequestStream() )
    {
        using( StreamReader reader = new StreamReader( data ) )
        {
            Response.Write( reader.ReadToEnd() );
        }
    }
    Response.End();
    Mais je doute, peut etre qu'il faudrait copier uniquement le contenu du <body> de la page, ou encore simplement le contenu du formulaire s'il y en a un (puisqu'asp.net insere son propre formulaire)... Enfin tu vois le genre de soucis qu'il peut y avoir.

  3. #3
    Membre du Club Avatar de Manralf
    Inscrit en
    Août 2005
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 43
    Points : 48
    Points
    48
    Par défaut
    En fait l'exception est levée sur cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    using( StreamReader reader = new StreamReader( data ) )
    Donc je n'arrive même pas à récupérer le flux HTTP
    Je continue à chercher.

  4. #4
    Membre du Club Avatar de Manralf
    Inscrit en
    Août 2005
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 43
    Points : 48
    Points
    48
    Par défaut
    J'ai trouvé !
    En fait il fallait que je fasse une requête POST pour que ça marche. Je donne le code, ça pourra peut-être servir à quelqu'un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create( "MaPage.asp" );
    request.Method = "POST";
    request.ContentType = "application/x-www-form-urlencoded";
     
    ASCIIEncoding encoding = new ASCIIEncoding();
    string postData = string.Format( "date={0:dd/MM/yyyy}", DateTime.Today );
    byte[] data = encoding.GetBytes( postData );
    request.ContentLength = data.Length;
     
    using( Stream streamData = request.GetRequestStream() )
    {
    	streamData.Write( data, 0, data.Length );
    	using( StreamReader reader = new StreamReader( request.GetResponse().GetResponseStream(), Encoding.Default ) )
    	{
    		Response.Write( reader.ReadToEnd() );
    	}
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Upload de fichier avec httpWebRequest
    Par james8484 dans le forum Services Web
    Réponses: 3
    Dernier message: 30/08/2011, 16h11
  2. Tentative avec HttpWebRequest, mais sans succès.
    Par zooffy dans le forum ASP.NET
    Réponses: 13
    Dernier message: 28/07/2010, 15h46
  3. [subversion/trac] Probl. de permission avec authz dans svnserve.conf
    Par mcdeffice dans le forum Administration système
    Réponses: 0
    Dernier message: 23/07/2009, 16h21
  4. Réponses: 1
    Dernier message: 17/12/2008, 15h15
  5. [C#] Problème accents avec HttpWebRequest
    Par aucean dans le forum C#
    Réponses: 2
    Dernier message: 03/12/2005, 14h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo