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

C# Discussion :

Web Service - Client C# et Serveur Apache


Sujet :

C#

  1. #1
    Membre chevronné
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Novembre 2004
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 285
    Points : 2 162
    Points
    2 162
    Par défaut Web Service - Client C# et Serveur Apache
    Bonjour à vous,

    Je post ici car je suis en train de porter un web service PHP sous C# (Visual Studio 2010).
    Le projet est en Framework 4 mais le web service a été rajouté comme référence compatible Framework2 (en fonction du wsdl).

    Je travail pour le moment juste sur un web service classique type "HelloWorld".

    Ce web service fonctionne correctement en PHP et en C#.

    Dès que je l'authentification est activé sur l'Apache par le .htaccess (Côté Serveur du Web Service) alors là lorsque je lance mon client C# j'obtiens cette erreur :
    Exception : WebException
    La demande a échoué avec l'état HTTP 400 : Bad Request.
    Dans les logs d'Apache je vois cette ligne :
    [Thu Feb 02 23:52:06 2012] [error] [client XX.XX.XX.XX] Invalid URI in request <?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="https://www.domaine.com/api/helloworld/webservices.php?wsdl" xmlns:types="https://www.domaine.com/api/helloworld/webservices.php?wsdl/encodedTypes" xmlnssi="http://www.w3.org/2001/XMLSchema-instance" xmlnssd="http://www.w3.org/2001/XMLSchema"><soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><tns:bonjour><prenom xsi:type="xsd:string">Toto</prenom></tns:bonjour></soap:Body></soap:Envelope>POST /api/helloworld/webservices.php HTTP/1.1
    Le code côté client C# est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    // On appelle le web service
    WebService mywebservice = new WebService();
                         
    // Définit une authentification BASIC             
    CredentialCache myCredentials = new CredentialCache();         
    NetworkCredential netCred = new NetworkCredential("User1", "Pass1");     
    myCredentials.Add(new Uri(mywebservice.Url), "Basic", netCred);
    mywebservice.Credentials = myCredentials;
    
    // Définit la valeur de l'user agent
    mywebservice.UserAgent = ".NET Framework";
    string retour = mywebservice.bonjour("Tata");
    MessageBox.Show(retour, "Retour de l'API", MessageBoxButtons.OK, MessageBoxIcon.Information);
    Pour information l'authentification fonctionne avec PHP et la requête qui fonctionne avec PHP est la suivante :

    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
    16
    POST /api/helloworld/webservices.php HTTP/1.0
    Host: www.domaine.com:443
    User-Agent: NuSOAP/0.9.5 (1.123)
    Content-Type: text/xml; charset=ISO-8859-1
    SOAPAction: "https://www.domaine.com/api/helloworld/webservices.php?wsdl#bonjour"
    Authorization: Basic fFGFdGDFGGGFdfhllerGDSFGFDGDSFGksjfdsgk343gFGFG==
    Content-Length: 637
     
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="https://www.domaine.com/api/helloworld/webservices.php?wsdl">
    <SOAP-ENV:Body>
    <tns:bonjour xmlns:tns="https://www.domaine.com/api/helloworld/webservices.php?wsdl">
    <prenom xsi:type="xsd:string">Tata</prenom>
    </tns:bonjour>
    </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>
    Merci encore pour votre aide.

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2010
    Messages : 16
    Points : 25
    Points
    25
    Par défaut
    Si tu as activé l'authentification, tu as modifié la configuration de ton Web Service. As-tu pensé à faire un update de ta référence dans ta solution ?

  3. #3
    Membre chevronné
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Novembre 2004
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 285
    Points : 2 162
    Points
    2 162
    Par défaut
    L'authentification est géré par le .htaccess.

    Je viens de refaire les étapes suivantes :

    Lorsque je ne m'authentifie pas dans le code C# j'obtiens une erreur :
    HTTP 401 : Authorization Required
    Si je décommente ma ligne d'authentification je passe tout de suite sur l'erreur 400 Bad Request.

    Et si je supprime mon fichier .htaccess cela fonctionne bien.

    A chaque étape que je viens de tester j'ai fait un souris droite sur le web service puis "Mettre à jour la référence Web".

    Merci.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2010
    Messages : 16
    Points : 25
    Points
    25
    Par défaut
    Est-il possible de voir ton .htaccess ?

  5. #5
    Membre chevronné
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Novembre 2004
    Messages
    1 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 285
    Points : 2 162
    Points
    2 162
    Par défaut
    Voici le fichier htaccess

    # Don't show directory listings for URLs which map to a directory.
    Options -Indexes

    # Se logue avec un compte AD
    AuthType Basic
    AuthBasicProvider ldap
    AuthName "Acces au webservice"
    AuthLDAPURL ldap://127.0.0.1:389/ou=clients,dc=domaine,dc=com?mail
    Require valid-user

Discussions similaires

  1. Web Services :Client SOAP pour un serveur REST
    Par victo dans le forum Services Web
    Réponses: 0
    Dernier message: 03/04/2014, 21h22
  2. Publier un web service .net sur un serveur Apache
    Par Kropernic dans le forum Services Web
    Réponses: 3
    Dernier message: 16/08/2010, 13h12
  3. Réponses: 6
    Dernier message: 21/04/2009, 10h03
  4. Web Services - Problème de communication serveur/client
    Par vern's dans le forum Web & réseau
    Réponses: 9
    Dernier message: 27/08/2007, 10h06
  5. [web] Passage d easyphp à serveur apache
    Par drakan dans le forum Web
    Réponses: 5
    Dernier message: 19/05/2005, 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