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

Windows Mobile .NET Discussion :

[CF 2][C#] Proxy vers WebService fonctionne en .net 2.0 et pas en CF 2.0


Sujet :

Windows Mobile .NET

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 21
    Points : 11
    Points
    11
    Par défaut [CF 2][C#] Proxy vers WebService fonctionne en .net 2.0 et pas en CF 2.0
    Bonjour à tous,

    J'essaye de me connecter sur le webservice décrit ici: https://api.betfair.com/global/v3/BFGlobalService.wsdl
    Nous avons donc un webservice BFGlobalService avec une méthode login qui prend un LoginReq et renvoi un LoginResp (qui hérite de APIResponse et contient donc un APIResponseHeader).

    Si j'appelle la méthode login depuis une application Winforms, aucun souci, je recupère bien tout les éléments.

    Si maintenant j'appelle la meme méthode depuis une application Windows Mobile 6, je recois bien un LoginResp en retour, mais dans lequel le header est null.

    J'ai donc essayé de surchager la methode GetWebResponse de mon objet Proxy créé par wsdl comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    protected override WebResponse GetWebResponse(WebRequest request)
            {
                WebResponse resp = base.GetWebResponse(request);
                StreamReader reader = new StreamReader(resp.GetResponseStream());
                String s = reader.ReadToEnd();
                Debug.WriteLine(s);
                reader.Close();
                return resp;
            }
    En debugage, après le ReadToEnd(), s contient bien ma reponse Soap complète, avec le header:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?xml version="1.0" encoding="UTF-8"?>
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:n2="http://www.betfair.com/publicapi/types/global/v3/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><n:loginResponse xmlns:n="http://www.betfair.com/publicapi/v3/BFGlobalService/"><n:Result xsi:type="n2:LoginResp"><header xsi:type="n2:APIResponseHeader"><errorCode xsi:type="n2:APIErrorEnum">OK</errorCode><minorErrorCode xsi:nil="1"></minorErrorCode><sessionToken xsi:nil="1"></sessionToken><timestamp xsi:type="xsd:dateTime">2008-01-21T17:25:10.875Z</timestamp></header><currency xsi:nil="1"></currency><errorCode xsi:type="n2:LoginErrorEnum">INVALID_USERNAME_OR_PASSWORD</errorCode><minorErrorCode xsi:nil="1"></minorErrorCode><validUntil xsi:type="xsd:dateTime">0001-01-01T00:00:00.000Z</validUntil></n:Result></n:loginResponse></soap:Body></soap:Envelope>
    par contre le Debug.WriteLine(s) m'affiche le debut suivit d'une exception:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?xml version="1.0" encoding="UTF-8"?>
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:n2="http://www.betfair.com/publicapi/types/global/v3/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><n:loginResponse xmlns:n="http://www.betfair.com/publicapi/v3/BFGlobalService/"><n:Result xsi:type="n2:LoginResp"><header xsi:type="n2:APIResponseHeader"><errorCode xsi:type="n2:APIErrorEnum">OK</errorCode><minorErrorCode xsi:nil="1"></minorErrorCode><sessionToken xsi:nil="1"></sessionToken><timestamp xsi:type="xsd:dateTime">2008-01-21T17:25:10.875Z</timestamp></header><currency xsi:nil="1"></currency><errorCode xsi:type="n2:LogiA first chance exception of type 'System.Net.WebException' occurred in System.dll
    Je ne voit pas très bien comment regler ce probleme de header null, ni de quel coté chercher...
    Si quelqu'un a une idée je suis preneur...
    Merci d'avance
    n0n0

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Points : 39 749
    Points
    39 749
    Par défaut
    Je me demande si le coupable n'est pas ton code de débugage... La fonction GetWebResponse n'est pas supposée lire le flux et le fermer, sinon le code qui va récupérer la réponse n'aura plus rien à lire... si tu lis et fermes le flux dans ta surcharge de GetWebResponse, le code qui appelle GetWebResponse et essaie de lire la réponse ne peut plus marcher.
    Celà dit l'erreur est peut-être du côté du webservice, mais là on peut rien pour toi..

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    Merci dejà de t'etre penché sur le probleme.

    En fait j'ai ajouté le code de debugage pour savoir pourquoi le header qui m'etait retoutné etait null. C'est sans surcharcher GetWebResponse, j'obtient ce header null. Lorsque j'ai ajouté le code de debug, j'obtient une exception parceque j'ai lu le stream, mais je sait pourquoi...

    Et si l'erreur venait du webservice, le probleme se produirait aussi en Winforms, alors que là, en Winforms tout va bien, et dès que je passe en compact framework, j(ai ce probleme de header null.

    n0n0

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    un truc tout bete auquel je viens de penser: le user-agent...

    Mais ce n'est pas ca non plus, j'ai forcé le user-agent à celui utilisé sous winforms : Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client Protocol 2.0.50727.1433).

    Le probleme reste le meme...

    n0n0

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    Pour essayer d'avancer sur ce probleme, j'ai essayé de sniffer ce qui se passait lors de l'appel.

    C'est du https, donc crypté, mais je vois clairement les 2 réponses du service web et elles sont identiques en winforms et compact framework.

    J'en deduit donc qu'il faut chercher du coté de la déserialisation du Soap...

    n0n0

Discussions similaires

  1. Réponses: 4
    Dernier message: 29/02/2012, 10h06
  2. Reverse proxy et webservices
    Par NoiBe dans le forum Apache
    Réponses: 1
    Dernier message: 23/04/2008, 16h05
  3. [ASE]Proxy vers ASA sous ASE
    Par tosprou dans le forum Adaptive Server Enterprise
    Réponses: 9
    Dernier message: 13/09/2007, 16h44
  4. Les proxy (utilite et fonctionnement?)
    Par Emplyst dans le forum Langage
    Réponses: 2
    Dernier message: 11/07/2006, 15h10

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