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

Services Web Discussion :

Consommation d'un WebService et gestion des soapfault


Sujet :

Services Web

  1. #1
    Membre habitué
    Homme Profil pro
    Agile Coach
    Inscrit en
    Mai 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Agile Coach
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2008
    Messages : 6
    Points : 154
    Points
    154
    Par défaut Consommation d'un WebService et gestion des soapfault
    Bonjour,

    j'accède un web service SOAP dans lequel il me faut gérer les cas d'erreur...

    Lors de la génération du fichir Reference.cs, VS2010 ne génère pas les classes relatives aux erreur (Fault) => déjà un point que je ne comprends pas.

    Ensuite, ma question est: comment gérer les erreurs (soap-fault) avec le Framework 2.0 (pas possible de passer à autre chose) ?

    Quand ma requête comporte des paramètres erronés, je passe en erreur http 500 et je reçois un xml "soap-faut" bien formé mais je ne sais pas comment le traiter avec mon client.

    j'ai essayé de surcharger HttpWebClientProtocol.GetWebResponse(...) mais si je consomme le stream (pour obtenir le xml "fault"), la suite de l'invoke part en exception (puisque le flux est vide).

    Suis-je clair dans mes explications ?
    Quelqu'un aurait-il une idée pour gérer les soap-fault (framework 2.0) ?

    Merci

  2. #2
    Membre habitué
    Homme Profil pro
    Agile Coach
    Inscrit en
    Mai 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Agile Coach
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2008
    Messages : 6
    Points : 154
    Points
    154
    Par défaut problème résolu
    Bon,
    si ça peut servir à quelqu'un...

    j'ai résolu mon problème comme suite:

    appel à la méthode du webservice mais modification du getWebRequest pour ajouter l'authentification et du GetWebResponse pour récupérer l'exception, prendre le contenu de la réponse du serveur (WebException.response) et remballer le tout à l'exécution "normale" qui part en exception (le flux est consommé dans le WebException) et passer outre (car faux problème):


    protected override WebRequest GetWebRequest(Uri uri)
    {
    HttpWebRequest request;
    request = (HttpWebRequest)base.GetWebRequest(uri);

    if (PreAuthenticate)
    {
    NetworkCredential networkCredentials = Credentials.GetCredential(uri, "Basic");

    if (networkCredentials != null)
    {
    string authInfo = networkCredentials.UserName + ":" + networkCredentials.Password;
    authInfo = Convert.ToBase64String(System.Text.Encoding.Default.GetBytes(authInfo));
    request.Headers["Authorization"] = "Basic " + authInfo;
    }
    else
    {
    throw new ApplicationException("No network credentials");
    }
    }
    return request;
    }


    protected override WebResponse GetWebResponse(WebRequest request)
    {
    try
    {
    using (WebResponse response = request.GetResponse())
    {
    using (StreamReader rd = new StreamReader(response.GetResponseStream()))
    {
    string soapResult = rd.ReadToEnd();
    resultXML = soapResult;
    }
    }
    }
    catch (WebException wExp)
    {
    if (wExp.Status == WebExceptionStatus.ProtocolError)
    {
    var response = ((HttpWebResponse)wExp.Response);
    try
    {
    using (var stream = response.GetResponseStream())
    {
    using (var reader = new StreamReader(stream))
    {
    resultXML = reader.ReadToEnd();
    }
    }
    }
    catch (WebException ex)
    {
    throw new WebException(ex.Message);
    }
    }
    }
    return base.GetWebResponse(request);
    }

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

Discussions similaires

  1. Gestion des URL par défaut des WebServices
    Par helios77 dans le forum ASP.NET
    Réponses: 4
    Dernier message: 13/05/2013, 13h39
  2. [WD15] Nouvelle gestion des webservices
    Par peijnoob dans le forum WinDev
    Réponses: 2
    Dernier message: 03/06/2010, 10h20
  3. Gestion des connexions à SQL Server 2005 dans un Webservice
    Par pete666 dans le forum Services Web
    Réponses: 3
    Dernier message: 10/09/2009, 08h43
  4. [WebServices] gestion des dossier
    Par anayathefirst dans le forum Jasper
    Réponses: 2
    Dernier message: 26/03/2008, 09h15
  5. c: gestion des exceptions
    Par vince_lille dans le forum C
    Réponses: 7
    Dernier message: 05/06/2002, 14h11

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