Page 1 sur 1
HTTPPOSTCLOB
Posté : jeu. 31 mai 2018, 16:09:21
par florian67
Bonjour,
J'essaie de consommer un service SOAP en SQL et ça ne se passe pas très bien pour le moment
Pour résumer un peu, je consomme un service avec HTTPAPI et ça fonctionne bien. Par contre il faut que je rajoute une notion d'unicode et du coup je suis coincé.
Je test donc en non unicode le HTTPPOSTCLOB pour valider déjà que ça fonctionne également.
Code : Tout sélectionner
dcl-s requete varchar(500);
dcl-s urlRetour varchar(16000);
requete = '<request xml:lang="EN" pwd="mdp" user="leUser">' +
'<import>'+
'<fields>'+
'<Company>'+
'<CoGrp>5001</CoGrp>' +
'<CoNo>654696</CoNo>' +
'<Company>test</Company>' +
'</Company>'+
'</fields>'+
'</import>'+
'</request>';
Exec Sql
Values SYSTOOLS.HTTPPOSTCLOB('https://serveur/dossier',
cast('' as CLOB(1K)),
cast(:requete as CLOB(50K)))
into :UrlRetour;
J'ai un SQLSTT 38000.
Est-ce que quelqu'un aurait une idée?
J'ai envoyé la même requête dans SOAPUI et ça passe bien.
Merci d'avance
Florian
SOAP
Posté : jeu. 31 mai 2018, 16:25:26
par cmasse
Il faut envoyer exactement l'enveloppe SOAP (celle envoyée par SOAPUI)
Code : Tout sélectionner
SYSTOOLS.HTTPPOSTCLOB('http://as400:10025/web/services/SOAPPRDService/SOAPPRD', NULL,
CAST('<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:soap="http://soapprd.wsbeans.iseries/">
<soapenv:Header/>
<soapenv:Body>
<soap:getprd>
<arg0>
<CODE>2</CODE>
</arg0>
</soap:getprd>
</soapenv:Body>
</soapenv:Envelope>' AS CLOB(10K)) )
Posté : ven. 01 juin 2018, 13:31:59
par florian67
La requête que je mets dans SOAP est exactement la même.
C'est pour cela que j'ai un peu du mal à comprendre.
Ci-dessous mot pour mot la requête dans SOAPUI.
Code : Tout sélectionner
<request xml:lang="EN" pwd="xxx" user="xxx">
<import>
<fields>
<Company>
<CoGrp>5001</CoGrp>
<CoNo>654696</CoNo>
<Company>test</Company>
</Company>
</fields>
</import>
</request>
Juste pour me mettre dans le même environnement, vous testez votre service depuis quelle plateforme (RDI, System i Nav...)?
J'ai testé à partir de RDI et j'ai cette erreur :
Abandon‬‎ ‪de‬‎ ‪la‬‎ ‪proc‬‎.‪‬‎ ‪stockée‬‎ ‪ou‬‎ ‪fonction‬‎ ‪UDF‬‎ ‪Java‬‎ ‪SYSTOOLS‬‎.‪HTTPPOSTCLOB‬‎,‪‬‎ ‪nom‬‎ ‪spécifique‬‎ ‪HTTPP00013‬‎.‪‬‎ ‪Exception‬‎ ‪‬‎:‪‬‎ ‪java‬‎.‪security‬‎.‪cert‬‎.‪CertificateException‬‎:‪‬‎ ‪No‬‎ ‪name‬‎ ‪matching‬‎ XXXXXX‬‎ ‪found‬‎.
Est-ce que c'est possible que ça soit le certificat SSL qui fait que ça ne fonctionne pas ?‪
HTTPS
Posté : mar. 05 juin 2018, 07:36:02
par admin
Si c'est un prb HTPS
Vous pouvez mettre des options à java, en créant un fichier d'options
Code : Tout sélectionner
-Xmx Mémoire pour java (par exemple -Xmx2g -> 2 Go)
http.proxyHost Coordonnées du Proxy
http.proxyPort port du proxy (80 par défaut)
http.proxyUser Utilisateur pour proxy
http.proxyPassword Mot de passe pour proxy
http.nonProxyHosts Liste des serveurs pour lesquels ne pas utiliser le proxy
javax.net.ssl.trustStore emplacement du fichier contenant la liste des certificats des sites de confiance
javax.net.ssl.trustStorePassword mot de passe pour ouvrir le fichier trustStore
javax.net.ssl.keyStore emplacement du fichier contenant la liste des certificats et des clés privées (keystore)
javax.net.ssl.keyStorePassword mot de passe pour ouvrir le fichier keyStore
Le fichier de propriétés java peut être indiqué comme suit :
en créant une variable d'environnement indiquant sa localisation
ADDENVVAR ENVVAR(QIBM_JAVA_PROPERTIES_FILE)
VALUE(/QIBM/userdata/java400/mySystem.properties)
en créant un fichier SystemDefault.properties dans la home directory de l'utilisateur
en créant un fichier SystemDefault.properties dans /QIBM/userdata/java400/
Posté : mer. 04 juil. 2018, 13:26:58
par florian67
Bonjour à tous,
Nous avons un peux avancé sur le sujet.
Après plusieurs échanges avec le support IBM, nous arrivons à consommer notre service.
Par contre, le but de ma manœuvre était de pouvoir envoyer des données unicode. Lorsque l'on consomme le service avec que des caractères "latins" ça fonctionne mais si on ajoute un caractère un peu spécial "język", nous avons cette erreur :
Code : Tout sélectionner
Erreur de fonction définie par l'utilisateur sur le membre QSQPTABL.
Abandon de la proc. stockée ou fonction UDF Java SYSTOOLS.HTTPPOSTCLOB,
nom spécifique HTTPP00013. Exception :
java.net.SocketException:Connection reset.
La requête :
Code : Tout sélectionner
requete = '<?xml version="1.0" encoding="UTF-8"?>' +
'<request xml:lang="EN" pwd="xxx" user="xxx">' +
'<import>'+
'<fields>'+
'<Company>'+
'<CoGrp>5001</CoGrp>' +
'<CoNo>654696</CoNo>' +
'<Company>język</Company>' +
// '<Company>' + companyEncoded + '</Company>' +
// '<Company>TEST-CN-FG</Company>' +
'</Company>'+
'</fields>'+
'</import>'+
'</request>';
header = '<httpHeader><header name="Content-Type" ' +
'value="text/xml;charset=utf-8" /></httpHeader>';
URL = 'https://Notreserveur/in/xml';
Exec Sql
Set :urlRetourclob = SYSTOOLS.HTTPPOSTCLOB(:URL,
:header, cast(:requete as clob(1M)));
De ce que nous avons pu voir c'est que tous les caractères non latins sont remplacé par une flêche, du coup le serveur nous renvoi une erreur.
Merci pour votre aide.
Florian
DBCLOB
Posté : mer. 04 juil. 2018, 14:23:32
par cmasse
Pour de l'UNICODE DBCLOB serait préférable à CLOB.....
Posté : jeu. 19 juil. 2018, 07:17:12
par florian67
Bonjour,
C'est bon ça fonctionne bien par contre il faut se mettre dans la bonne langue pour qu'il n'y ai pas d'erreur (un peu dommage pour de l'unicode).
Par contre, nous avons une procédure stockée qui appelle ce programme également. Le soucis c'est que nous ne connaissons pas la langue de la personne du coup on ne peut se mettre dans l'environnement (CHGJOB).
J'ai quand même essayé de faire un CHGJOB et de me mettre dans la langue mais ça ne passe pas car je pense qu'en faisant un %char il fait une conversion dans la langue SYSTEM (*SYSVAL pour le profil QUSER).
Est-ce qu'il y aurait un moyen de bien faire transiter ma valeur jusqu'au service?
(sujet inconnu)
Posté : mer. 05 déc. 2018, 12:03:22
par Oubari
Vous êtes à la recherche d'un cadre de BMX cruiser ? Ce comparatif
https://velo-equipement.com/cadre-bmx-c ... omparatif/ vous sera d'une grande aide.