Je développe un client pour utiliser des Services Web.
Pour cela j'utilise l'importeur WSDL de delphi7 qui génère mon code pour accéder aux différentes fonctions du(des) service(s) web.

J'ai déjà eu des problèmes avec l'authentification, le code de base généré par delphi balancait la trame suivante (j'ai volontairement masqué les noms des services) :

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 /sigems/services/XXXYYY HTTP/1.1
SOAPAction: ""
Content-Type: text/xml
User-Agent: Borland SOAP 1.2
Host: 212.234.37.97:1234
Content-Length: 481
Connection: Keep-Alive
Cache-Control: no-cache
 
<?xml version="1.0"?>
<SOAP-ENV:Envelope 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/">
  <SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
    <NS1:XXXZZZ xmlns:NS1="http://212.234.37.97:1234/sigems/services/XXXYYY"/>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
alors que le service avait besoin d'une authentification de type

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
Authorization: Basic qmYhe67rvvt89i0mkky==
Après avoir galéré pendant pas mal de temps j'ai finalement réussi à ajouter l'authentification en passant directement par l'API HttpAddRequestHeaders(...) bref j'ai fais le bourrin mais j'ai rien trouver de mieux D'ailleurs si quelqu'un veut la méthode, je peux donner le code, en cherchant sur google j'ai vu pas mal de gens qui avait le même problème, sans réponses :-/

Ainsi j'ai pu enfin accéder aux services Web :Applo:

Mais voilà, en voulant utiliser une autre "fonction" du service je découvre un nouveau problème !
Je me retape cette erreur d'authentification, et en regardant les trames envoyées, j'ai compris :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
POST /sigems/services/XXYYZZZ HTTP/1.1
SOAPAction: ""
Content-Type: text/xml
Authorization: Basic qmYhe67rvvt89i0mkky==
User-Agent: Borland SOAP 1.2
Host: 212.234.37.97:1234
Content-Length: 775
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: JSESSIONID=56F7DD14FCA80A0D50D06A89AA27A083
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
<?xml version="1.0"?>
<SOAP-ENV:Envelope 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/">
  <SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
    <NS1:XXXZZZYY xmlns:NS1="http://212.234.37.97:1234/sigems/services/XXYYZZZ">
      <param1 xsi:type="xsd:string">value1</param1>
      <param2 xsi:type="xsd:string">value2</param2>
      <param3 xsi:type="xsd:string">value3</param3>
    </NS1:XXXZZZYY>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
En fait l'authentification est bien là, mais le problème vient du fait que c'est non plus envoyé en un packet, mais en 2 !
Déjà je comprend pas déjà pourquoi le packet est découpé mais surtout qu'est-ce que ça change ? J'ai remarqué que le serveur se génait pas pour découper ses réponses en plusieurs paquets...
Se peut-il qu'il a y une erreur sur le calcul de la taille de mon paquet et que ce découpage est innatendu par le serveur (en tout cas, pas de cette manière) ? car c'est vrai que j'ai ajouté l'authentification à la brute quand même...

Ces services web me font péter un plomb
Si quelqu'un a une idée ! je lui serais très reconnaissant