Volubis, le forum IBM i Index du Forum Volubis, le forum IBM i
avec les clubs Informatiques IPL et Bretagne.
 
 FAQFAQ   RechercherRechercher   Liste des MembresListe des Membres   Groupes d'utilisateursGroupes d'utilisateurs   S'enregistrerS'enregistrer 
 ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 

HTTPPOSTCLOB

 
Poster un nouveau sujet   Répondre au sujet    Volubis, le forum IBM i Index du Forum -> langages
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
florian67



Inscrit le: 23 Déc 2013
Messages: 86

MessagePosté le: Jeu 31 Mai 2018, 16:09:21    Sujet du message: HTTPPOSTCLOB Répondre en citant

Bonjour,

J'essaie de consommer un service SOAP en SQL et ça ne se passe pas très bien pour le moment Smile

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:


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
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
cmasse
Site Admin


Inscrit le: 14 Fév 2007
Messages: 658
Localisation: Nantes

MessagePosté le: Jeu 31 Mai 2018, 16:25:26    Sujet du message: SOAP Répondre en citant

Il faut envoyer exactement l'enveloppe SOAP (celle envoyée par SOAPUI)
Code:

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))  )

_________________
Christian Massé (Volubis.fr)
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
florian67



Inscrit le: 23 Déc 2013
Messages: 86

MessagePosté le: Ven 01 Juin 2018, 13:31:59    Sujet du message: Répondre en citant

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:

<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 ?‪
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
admin
Site Admin


Inscrit le: 14 Fév 2007
Messages: 25
Localisation: Carquefou (Nantes)

MessagePosté le: Mar 05 Juin 2018, 07:36:02    Sujet du message: HTTPS Répondre en citant

Si c'est un prb HTPS
Vous pouvez mettre des options à java, en créant un fichier d'options
Code:

    -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/
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Envoyer un e-mail Visiter le site web de l'utilisateur
florian67



Inscrit le: 23 Déc 2013
Messages: 86

MessagePosté le: Mer 04 Juil 2018, 13:26:58    Sujet du message: Répondre en citant

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:
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:
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
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
cmasse
Site Admin


Inscrit le: 14 Fév 2007
Messages: 658
Localisation: Nantes

MessagePosté le: Mer 04 Juil 2018, 14:23:32    Sujet du message: DBCLOB Répondre en citant

Pour de l'UNICODE DBCLOB serait préférable à CLOB.....
_________________
Christian Massé (Volubis.fr)
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
florian67



Inscrit le: 23 Déc 2013
Messages: 86

MessagePosté le: Jeu 19 Juil 2018, 07:17:12    Sujet du message: Répondre en citant

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?
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
Oubari



Inscrit le: 05 Déc 2018
Messages: 1

MessagePosté le: Mer 05 Déc 2018, 12:03:22    Sujet du message: (sujet inconnu) Répondre en citant

Vous êtes à la recherche d'un cadre de BMX cruiser ? Ce comparatif https://velo-equipement.com/cadre-bmx-cruiser-votre-comparatif/ vous sera d'une grande aide.
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Volubis, le forum IBM i Index du Forum -> langages Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1

 
Sauter vers:  
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


Powered by phpBB © 2001, 2005 phpBB Group
Traduction par : phpBB-fr.com

Anti Bot Question MOD - phpBB MOD against Spam Bots