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 :

Comment utiliser le canal interne du web service


Sujet :

Services Web

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Janvier 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2016
    Messages : 13
    Points : 26
    Points
    26
    Par défaut Comment utiliser le canal interne du web service
    Bonjour,

    J'ai une documentation et un WSDL, jusqu'ici c'est plutôt des bonnes nouvelles.

    J'ai importé le WSDL en référence et je retrouve bien OrderServiceV1_10PortChannel.

    La documentation indique que le header doit être envoyé à chaque appelle et donne l'exemple ci-dessous.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    using (new OperationContextScope(api.InnerChannel))
    {
        var httpRequestProperty = new HttpRequestMessageProperty();
        httpRequestProperty.Headers[System.Net.HttpRequestHeader.Authorization] = "Basic " + Convert.ToBase64String(Encoding.ASCII.GetBytes("11111111111111:pppppppp"));
        OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = httpRequestProperty;
     
        // Appel à une méthode du service    
        api.method(...);
    }
    J'ai créé une application console pour tester

    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
            static void Main(string[] args)
            {
                var api = new apiSp2Web.OrderServiceV1_10PortChannel(); 
     
                using (new OperationContextScope(api))
                {
                    var httpRequestProperty = new HttpRequestMessageProperty();
                    httpRequestProperty.Headers[System.Net.HttpRequestHeader.Authorization] = "Basic " + Convert.ToBase64String(Encoding.ASCII.GetBytes("11111111111111:pppppppp"));
                    OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = httpRequestProperty;
     
                    // Appel à une méthode du service    
                    // api.method(...);
                    var response = api.OrderStatus("838-488-931");
                }
            }
    Le soucis (ou pas) est que OrderServiceV1_10PortChannel est une interface et que je ne peux pas créer de nouvelle instance.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public interface OrderServiceV1_10PortChannel : apiSp2Web.OrderServiceV1_10Port, System.ServiceModel.IClientChannel
    Pouvez-vous m'expliquer ce que je fais mal ?

    Merci par avance.
    Gshin

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Janvier 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2016
    Messages : 13
    Points : 26
    Points
    26
    Par défaut
    C'est bon j'ai réussi, je pensais que InnerChannel était défini dans le WSDL de l'API sous le nom OrderServiceV1_10PortChannel mais il est défini dans System.ServiceModel comme InnerChannel

    Donc avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                var client = new OrderServiceV1_10PortClient();
     
                using (new OperationContextScope(client.InnerChannel))
    ...
    Tout fonctionne parfaitement .

    Gshin

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

Discussions similaires

  1. utiliser le dataset d'un web service
    Par k750_b dans le forum Services Web
    Réponses: 1
    Dernier message: 04/03/2008, 15h11
  2. Comment obtenir le répertoire d'un web Service?
    Par Nixar dans le forum ASP.NET
    Réponses: 4
    Dernier message: 06/11/2007, 14h15
  3. Réponses: 1
    Dernier message: 26/01/2007, 16h13
  4. Réponses: 2
    Dernier message: 26/09/2006, 08h56
  5. [VS2005][NUnit] Comment utiliser Nunit sur un site web
    Par Dadou74 dans le forum Visual Studio
    Réponses: 1
    Dernier message: 31/08/2006, 09h53

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