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

Réseau .NET Discussion :

Echec d'un GetRequestStream sur requête HTTP post


Sujet :

Réseau .NET

  1. #1
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    283
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 283
    Points : 91
    Points
    91
    Par défaut Echec d'un GetRequestStream sur requête HTTP post
    Bonjour,

    J'ai un service windows qui envoie des requête HTTPS vers un terminal.

    Si je donne au service les droits administrateur au service via services.msc tout va bien.
    Si je donne les droits LocalSystem, j'ai une erreur 403 Forbidden sur un GetRequestStream

    ERROR STACK TRACE ===>System.Net.WebException: The remote server returned an error: (403) Forbidden.
    at System.Net.HttpWebRequest.GetRequestStream(TransportContext& context)
    at System.Net.HttpWebRequest.GetRequestStream()
    Merci d'avance.

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    		 String credentials = System.Convert.ToBase64String(System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes(user + ":" + pwd));
                     ServicePointManager.Expect100Continue = true;
                     ServicePointManager.SecurityProtocol =  SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
     
     
                    string url;
                    if (pQueryType == QueryType.post)
                    {
                        url = string.Format("https://{0}//putxml", ipAddress);
                    }
                    else
                    {
                        url = string.Format("https://{0}/getxml?{1}", ipAddress, pQuery);
                    }
     
                    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
                    request.Headers.Add("Authorization", "Basic " + credentials);
                    request.UserAgent=  "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) Gecko/20100101 Firefox/25.0";
                    request.Method = pQueryType == QueryType.post ? "POST" : "GET"; 
     
     
                    byte[] bytes;
     
                    if (pQueryType == QueryType.post)
                    { 
     
                        bytes = System.Text.Encoding.UTF8.GetBytes(pQuery);
                        request.ContentType = "application/x-www-form-urlencoded";
                        request.ContentLength = bytes.Length;
                        request.Timeout = 3000;
                        request.ProtocolVersion = HttpVersion.Version11;
                        request.KeepAlive = false; 
                        request.Accept = "*/*";
     
                        if (request.Proxy != null)
                        {
                            request.Proxy.Credentials = CredentialCache.DefaultCredentials;
                        }
     
                        request.AllowWriteStreamBuffering = false;
                        request.Credentials = CredentialCache.DefaultCredentials;
     
                        Stream requestStream = request.GetRequestStream();  // <<<ECHEC ICI
                        requestStream.Write(bytes, 0, bytes.Length);
                        requestStream.Close();
                    }
     
                    HttpWebResponse response = request.GetResponse() as HttpWebResponse;
     
                    if (response.StatusCode == HttpStatusCode.OK)
                    {
                        Stream responseStream = response.GetResponseStream();
                        string responseStr = new StreamReader(responseStream).ReadToEnd();
                        result = true;
     
                        pResponse = responseStr;
                        responseStream.Close();
                    }

  2. #2
    Inactif  

    Homme Profil pro
    Ingénieur test de performance
    Inscrit en
    Décembre 2003
    Messages
    1 986
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur test de performance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 986
    Points : 2 605
    Points
    2 605
    Par défaut
    Vu la réponse du serveur http 403, cela ressemble à un problème de user/pass.

    La première chose à faire est de vérifier si la requête est similaire dans les deux cas, côté serveur par exemple.

Discussions similaires

  1. Requête HTTP POST sur Twitter avec OAuth
    Par e-zaz dans le forum Services Web
    Réponses: 2
    Dernier message: 23/10/2014, 13h23
  2. Réponses: 1
    Dernier message: 10/01/2008, 18h30
  3. Requête HTTP POST sous .Net
    Par Médinoc dans le forum Framework .NET
    Réponses: 2
    Dernier message: 30/10/2007, 17h30
  4. [LINUX] Simuler une requête HTTP POST ou GET
    Par Anified dans le forum Linux
    Réponses: 1
    Dernier message: 05/02/2007, 16h11
  5. Comment effectuer une requête http post ?
    Par Turtle_fr dans le forum 4D
    Réponses: 10
    Dernier message: 07/09/2006, 01h25

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