OVH Cloud OVH Cloud

[WinForm] : Gérer les codes statut HTTP à partir d'un buffer...

1 réponse
Avatar
Drix
Bonjour,

j'aimerai pouvoir exploiter les codes statut qui me sont retournés lors
d'une requête HTTP.
Le fonctionnement sort un peu du cadre habituel :
- J'envoie une requête HTTP Post contenant un fichier XML avec la méthode
suivante :

private void mEnvoyerMessage(string msg)
{
string sRequete = "xmlMsg="+ mEncoderMessage(msg);
HttpWebRequest objReq = (HttpWebRequest) WebRequest.Create("http://"+
_urlGateway +":"+ _portGateway);
objReq.KeepAlive = false;
objReq.Method = "POST";
objReq.Accept = "text/html, image/gif, image/jpeg, *; q=.2; q=.2";
objReq.ContentType = @"application/x-www-form-urlencoded";
objReq.ContentLength = sRequete.Length;

try
{
StreamWriter sw = new System.IO.StreamWriter(objReq.GetRequestStream());
sw.Write(sRequete);
sw.Close();
}
catch
{
MessageBox.Show(ERR_CONNEXION_B2B);
}
}


Les réponses (car je reçois un acquittement et 0 à n réponses) sont traitées
de manière asynchrone, en écoutant un port.

A chaque réception, la méthode suivante est appelée :

private void mRecevoirMessage(IAsyncResult asyncResult)
{
try
{
// On récupère le socket de la connexion
Socket socket = (Socket)asyncResult.AsyncState;

// On lit les bytes qui sont envoyés par le client
int iLecture = socket.EndReceive(asyncResult);
afficheDonnees = new string[] {
mDecoderMessage(Encoding.ASCII.GetString(_bufferLecture, 0, iLecture)) };
...
...
}
}

Le contenu réceptionné est dans le buffer _bufferLecture.
J'aimerai instancier un objet HttpWebResponse pour récupérer facilement les
erreurs HTTP, mais je ne sais pas s'il est possible de caster mon buffer ou
la chaîne qui en découle en une réponse HTTP.

Est-ce possible ?
Peut-être y a-t-il un moyen plus simple pour traiter mes codes statut HTTP ?

Merci de votre réponse

1 réponse

Avatar
Paul Bacelar
http://www.codeproject.com/managedcpp/cswget01.asp?msgy9022
--
Paul Bacelar

"Drix" wrote in message
news:
Bonjour,

j'aimerai pouvoir exploiter les codes statut qui me sont retournés lors
d'une requête HTTP.
Le fonctionnement sort un peu du cadre habituel :
- J'envoie une requête HTTP Post contenant un fichier XML avec la méthode
suivante :

private void mEnvoyerMessage(string msg)
{
string sRequete = "xmlMsg="+ mEncoderMessage(msg);
HttpWebRequest objReq = (HttpWebRequest) WebRequest.Create("http://"+
_urlGateway +":"+ _portGateway);
objReq.KeepAlive = false;
objReq.Method = "POST";
objReq.Accept = "text/html, image/gif, image/jpeg, *; q=.2; q=.2";
objReq.ContentType = @"application/x-www-form-urlencoded";
objReq.ContentLength = sRequete.Length;

try
{
StreamWriter sw = new


System.IO.StreamWriter(objReq.GetRequestStream());
sw.Write(sRequete);
sw.Close();
}
catch
{
MessageBox.Show(ERR_CONNEXION_B2B);
}
}


Les réponses (car je reçois un acquittement et 0 à n réponses) sont


traitées
de manière asynchrone, en écoutant un port.

A chaque réception, la méthode suivante est appelée :

private void mRecevoirMessage(IAsyncResult asyncResult)
{
try
{
// On récupère le socket de la connexion
Socket socket = (Socket)asyncResult.AsyncState;

// On lit les bytes qui sont envoyés par le client
int iLecture = socket.EndReceive(asyncResult);
afficheDonnees = new string[] {
mDecoderMessage(Encoding.ASCII.GetString(_bufferLecture, 0, iLecture)) };
...
...
}
}

Le contenu réceptionné est dans le buffer _bufferLecture.
J'aimerai instancier un objet HttpWebResponse pour récupérer facilement


les
erreurs HTTP, mais je ne sais pas s'il est possible de caster mon buffer


ou
la chaîne qui en découle en une réponse HTTP.

Est-ce possible ?
Peut-être y a-t-il un moyen plus simple pour traiter mes codes statut HTTP


?

Merci de votre réponse