Forum Clubic

Error 404 en httpwebrequest c#

Bonjour,
je fais un programme utilisant une architecture 3 tiers. pour récupérer les données auprès de mon serveur d’application je dois lui envoyé une série de requete dans un ordre précis pour identifier les différentes requête possible.

En ce qui concerne la 1ere requête ( celle de connexion ) je n’ai aucun problème par contre la seconde me renvoie une erreur 404 (Introuvable).

voici le code que j’utilise :


            HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://localhost:81/moncontroler/monaction");
            request.Credentials = new NetworkCredential("user", "pass");
            request.ContentType = "application/json";
            request.Accept = "application/json";
            request.Method = "POST";
            request.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip | DecompressionMethods.None;
            request.CookieContainer = new CookieContainer();

            // envoyer le packet json
            String json = "{\r\n\"action\": \"monaction\",\r\n\"controler\": \"moncontroler\"\r\n}"; 
            Stream PostData = request.GetRequestStream();
            byte[] json_bytes = ASCIIEncoding.Default.GetBytes(json);
            PostData.Write(json_bytes, 0, json_bytes.Length);
            PostData.Close();

            // récupérer le résultat
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();

quelqu’un voit-il ou je fais mon erreur?

noté que il est exclus que cela vienne du serveur car le même type de client en pascal fonctionne sans problème.
la chaine json est la chaine parameter qui est utilisé en pascal donc elle ne contient pas d’erreur.

Bon vu que personne n’a d’idée quelqu’un connais un moyen d’intercepter les données échangé par deux processus?
histoire de voir la différence entre les octets envoyé avec chaque client pour ensuite rectifier le tire en c#

Sinon question bête (même très bête) serait-il possible que le serveur et le client soit incompatible du fait qu’il sont écrit en avec des langages différent?
Edité le 18/08/2008 à 16:55

Tu as Ethereal qui fait ça.

tu n’aurais pas quelque chose qui le ferai en local car la problème de ethereal viens du fait qu’il ne capture que sur une sortie réseau et le client en pascal ( que je n’ai pas développé on me la fourni en exemple) fonction avec une url contenant localhost donc pas de sorti réseau
ethereal convient pour le client c# mais pas pour le client pascal

?

Quand tu tape localhost, tu passes aussi par la carte réseau. C’est juste qu’il ne sort pas du réseau… d’où le nom de “loopback”, donc tente avec.

le protocole IP n’est pas gérer par la carte réseau mais par un couche logiciel supérieur donc les packet ne vont même pas sur la carte réseau en localhost ( windows prend le pas et les redirige avant la carte réseau) résultat pas de réaction de la part de wireshark, il ne capte pas les trams. sinon si je débranché le câble réseau et que je lance l’application j’aurais la capture des tram ce qui n’est pas le cas que le câble réseau du PC soit branché ou non

Au temps pour moi.

Tente ça: ici.lemmy.free.fr…

(ceci étant, une petite recherche google…)
Edité le 19/08/2008 à 10:40

Merci cela fonctionne maintenant a moi de me dépêtrer des octet contenu dans les champs data de mes tram super!!^^

En fait le problemme vient de la session qui n’est pas conservé de base
ce que je ne comprend c’est l’erreur dans mon code pour conserver cette session

j’ai trouvé en fait il me fallait récupérer le le cookie est le créer ensuite lors de la création de la nouvelle requête

en fin de 1ere requete :

MaCookieString = response.Headers["Set-Cookie"].Split(';')[0];

puis lorsque que l’on créer la nouvelle requete


if(MaCookieString != null)
{
request.CookieContainer.SetCookie(request.RequestUri,MaCookieString);
}