Précédent   Forum des professionnels en informatique > Environnements de développement > Delphi > Web & réseau
Web & réseau Développement web et programmation réseau avec Delphi
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/02/2012, 08h07   #1
Invité de passage
 
Inscription : février 2011
Messages : 20
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 20
Points : 0
Points : 0
Par défaut Web Server ISAPI format document/literal

Bonjour,
Hier j'ai posté une discussion dans la catégorie langage, mais je pense que "web/réseau" est plus approprié.
Ne sachant pas comment déplacer cette discussion.
Voici mon problème : impossible de changer le format RPC/encoded en Delphi. Ce format n'est pas compris par Java donc j'aimerais que le WSDL de mon server soit en document/literal.

Pour plus d'information voici le post d'hier :
http://www.developpez.net/forums/d11...i/#post6491587
pibull est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/02/2012, 11h30   #2
Expert Confirmé Sénior
 
Avatar de ShaiLeTroll
 
Homme
Développeur C++\Delphi
Inscription : juillet 2006
Messages : 7 845
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 31
Localisation : France

Informations professionnelles :
Activité : Développeur C++\Delphi
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : juillet 2006
Messages : 7 845
Points : 10 549
Points : 10 549
Pourtant le PHP, le comprend, j'ai toujours forcé le encoded avec Delphi 7, le literal étant souvent franchement pas terrible !
J'ai déjà eu un client Java, cela fonctionnait, ton client dois utiliser JAX-RPC au lieu de JAX-WS, cela doit être cela ton problème, ils ont changés l'implémentation et retirer le support du RPC mais heureusement les sources sont toujours disponibles !
Tout ça pour un problème de performance, ils auraient pu laisser pour les petits serveurs le mode RPC, certe plus lent mais tellement plus simple !

la balise générée est bien

Code xml :
<soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
tu veux à la place
Code xml :
<soap:body use="literal" />

je crois que ceci est une mauvaise nouvelle : Release Notes for XE2

Citation:
Services .NET SOAP disponibles avec Delphi Prism

Le support du serveur Win32 SOAP génère des services Web de style RPC|Encoded. Si vous voulez un service document/littéral ou un service de tout autre style compatible WS-I, vous devez construire votre serveur SOAP avec Delphi Prism, qui supporte les spécifications SOAP prises en charge par le .NET Framework, notamment les styles compatibles WS-I.
__________________
Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
Attention Troll Méchant !
"Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
L'ignorance n'excuse pas la médiocrité !

L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

Parisien ! Dites NON à la VO ST au Cinéma !
Soit VF Soit VO sans sous-titre
ShaiLeTroll est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 08h14   #3
Invité de passage
 
Inscription : février 2011
Messages : 20
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 20
Points : 0
Points : 0
Ok. Merci.
Le client Java n'est pas développé par moi, je vais leur demander d'utiliser JAX-RPC ... mais ce n'est pas gagné
Si je comprends bien, si c'est mon web server qui doit changer et donc document/literal je dois migrer vers la XE2 avec le module prism. C'est quand même dommage que la version 2010 ne permette pas ceci.
pibull est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2012, 10h35   #4
Expert Confirmé Sénior
 
Avatar de ShaiLeTroll
 
Homme
Développeur C++\Delphi
Inscription : juillet 2006
Messages : 7 845
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 31
Localisation : France

Informations professionnelles :
Activité : Développeur C++\Delphi
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : juillet 2006
Messages : 7 845
Points : 10 549
Points : 10 549
Mais cela existe en Lazarus !
Web Service Toolkit écrit en Free Pascal devrait être compatible !
Tente de l'intégrer dans ton Delphi comme une Lib externe !


Sinon tu peux juste faire une passerelle !
Tu fais un Client en RAD PHP ou en Zend Studio, qui importe ton Serveur et réexporte son propre Server, il fera office de Proxy !
RAD PHP sera tout de même plus léger qu'une Visual Studio .NET + Prism à installer pour développer ET à déployer !
Surtout ne déporte pas l'intelligence dans Prism, fait juste un Proxy, un module d'extension pour CE cas !

Si tu utilises Prism, tu pourrais en Delphi faire un Serveur DataSnap, en Prism un Client DataSnap qui lui expose le WS !

En parlant de DataSnap, tu pourrais l'exporter en WebService REST !
le REST pourrait remplacer le SOAP !
A Etudier aussi !

Après tout dépend aussi le contrat de développement, j'ai eu ce genre de mésaventure avec le WSS .NET pour la sécurité des WS qu'exigeait un partenaire sur un projet, cet élément ne faisait pas partie du cahier des charges, rien en Delphi, cela nécessitait donc une nouvelle techno (un passerelle .NET ou Java justment) dont le coût doublait celui du projet !
Au final, on a choisi un Tunneling SSH avec Port Forwarding, pour moi, c'était une fonctionnalité intégré à l'application, le coût fut donc minime !
Pour eux, tout bon admin réseau sait installé un Serveur SSH Windows ou un OpenSSH !

Sinon tu leur fait une DLL !
un DLL en JNI ou JNA utilisable depuis du JAVA qui fera un client !

Tu as plein de possibilité !
__________________
Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
Attention Troll Méchant !
"Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
L'ignorance n'excuse pas la médiocrité !

L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

Parisien ! Dites NON à la VO ST au Cinéma !
Soit VF Soit VO sans sous-titre
ShaiLeTroll est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2012, 18h22   #5
Invité de passage
 
Inscription : février 2011
Messages : 20
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 20
Points : 0
Points : 0
Merci beaucoup pour tout ces détails.
Je suis en train de regarder pour JNI.

J'ai un autre problème cette fois avec SAP pffffff ! Je m'en sortirais jamais.
Il ne reconnait pas le type array.
J'ai un array of array of string.
mon wsdl est le suivant :
- <types>
- <xs:schema targetNamespace="urn:serverIntf" xmlns="urn:serverIntf">
- <xs:complexType name="ArrayOfArray">
- <xs:complexContent>
- <xs:restriction base="soapenc:Array">
<xs:sequence />
<xs:attribute ref="soapenc:arrayType" n1:arrayType="ns1:ArrayOfString[]" xmlns:n1="http://schemas.xmlsoap.org/wsdl/" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
- <xs:complexType name="ArrayOfString">
- <xs:complexContent>
- <xs:restriction base="soapenc:Array">
<xs:sequence />
<xs:attribute ref="soapenc:arrayType" n1:arrayType="xs:string[]" xmlns:n1="http://schemas.xmlsoap.org/wsdl/" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
</xs:schema>
</types>

SAP me dit qu'ils attendent plus :
<xsd:element name="MyArray1" type="tns:MyArray1Type"/>
<xsd:complexType name="MyArray1Type">
<xsd:sequence>
<xsd:element name="x" type="xsd:string"
minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>

Je ne trouve pas comment arriver à enlever la restriction de base et l'attribut.
J'ai essayé de modifier les options des composants mais le WSDL généré ne change pas.
Quelqu'un a-t-il une idée ?
Merci d'avance.
pibull est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h35.


 
 
 
 
Partenaires

Hébergement Web