Page 1 sur 2

RESPONSEMSG qui contient un - lors d'une 400

Posté : ven. 02 avr. 2021, 12:10:34
par raphael1980
Hello,

J’essaie d’utiliser le HTTPPOSTCLOBVERBOSE de SYSTOOLS mais je ne reçois pas le body d’API attaquée quand le code retour est 400 ou 500 mais un simple -.

Aucun problème quand le code retour est 200.

select *
FROM TABLE (systools.httpPostClobVERBOSE ( CAST ( 'URL' as varchar(200) CCSID 1208),
cast('<httpHeader> <header name="Content-Type" value="application/json;charset=utf-8"/><header name="Authorization" value=" TOKKEN" /> </httpHeader>' as clob(10k) ccsid 1208),
cast('{ "Key1":699, "Key2":51 }' as clob(10k) ccsid 1208)) )as tabtes ;

Avez-vous une idée*?

D'avance, merci.
Raphaël.

Re: RESPONSEMSG qui contient un - lors d'une 400

Posté : ven. 02 avr. 2021, 16:16:49
par nbonnet
Bonjour,

Ici le code retour est HTTP 400 => Bad request
Dans ce cas, rien n'oblige à retourner un message en réponse.
Cela me semble cohérent. En cas de doute, vérifiez avec un outil du type curl, wget, SOAP UI, POSTMAN ou autre ...

Cordialement,

Re: RESPONSEMSG qui contient un - lors d'une 400

Posté : mar. 06 avr. 2021, 07:14:24
par raphael1980
J’aurais du le préciser. J’ai évidement testé via postman.

L’API répond bien un message de retour du genre.

[
{
"message": "RC: bad value for restricted picklist field: 35",
"errorCode": "INVALID_OR_NULL_FOR_RESTRICTED_PICKLIST",
"fields": [
"FW_Commerciale__c"
]
}
]

Re: RESPONSEMSG qui contient un - lors d'une 400

Posté : mar. 06 avr. 2021, 07:48:36
par nbonnet
Bonjour,

je n'ai pas refait de tests, mais en cas d'erreur (statut HTTP différent de 2*), les fonctions *VERBOSE renvoient les informations d'erreurs dans RESPONSEMSG : cf https://www.ibm.com/docs/en/i/7.4?topic ... n-overview

J'essaie de retrouver mes tests la dessus !

Re: RESPONSEMSG qui contient un - lors d'une 400

Posté : mar. 06 avr. 2021, 08:06:00
par raphael1980
Effectivement, j'avais espérer l'avoir dans RESPONSEMSG mais j'ai un joli -

Le header aide un peu mais ne donne pas non plus l'erreur exact retournée dans le JSON en body de l'API.

<?xml version="1.0" encoding="UTF-8" ?>
<httpHeader responseCode="400">
<responseMessage>Bad Request</responseMessage>

<header name="Transfer-Encoding" value="chunked"/>
<header name="HTTP_RESPONSE_CODE" value="HTTP/1.1 400 Bad Request"/>
<header name="X-Robots-Tag" value="none"/>
<header name="Strict-Transport-Security" value="max-age=31536002; includeSubDomains"/>
<header name="Cache-Control" value="no-cache,must-revalidate,max-age=0,no-store,private"/>

<header name="Date" value="Fri, 02 Apr 2021 11:16:45 GMT"/><header name="Content-Type" value="application/json;charset=UTF-8"/><header name="XXX-Limit-Info" value="api-usage=192/5000000"/></httpHeader>

Re: RESPONSEMSG qui contient un - lors d'une 400

Posté : mar. 06 avr. 2021, 08:09:56
par raphael1980
je ne t'avais pas compris !

C'est ok , je devais simplement mettre includeErrorMsg="true" dans le httpHeader !

Merci pour ton aide.

Re: RESPONSEMSG qui contient un - lors d'une 400

Posté : jeu. 08 avr. 2021, 11:10:12
par raphael1980
J’ai malgré tout un autre souci.

On souhaite utiliser l’API de SalesForce qui n’accepte pas les méthodes PUT mais juste des PATCH.

Hors, je ne vois pas de fonction qui permet de faire un HTTPPATCH.

Une idée ? Une piste ?

Re: RESPONSEMSG qui contient un - lors d'une 400

Posté : jeu. 08 avr. 2021, 12:13:51
par raphael1980
Bon, j'ai triché.... :twisted:

J'ai envoyé un post et j'ai redéfini la méthode dans l'URL.

url + "?_HttpMethod=PATCH"

Du bricolage mais je ne voyais pas comment faire autrement.

Re: RESPONSEMSG qui contient un - lors d'une 400

Posté : jeu. 22 avr. 2021, 10:24:23
par nbonnet
Bonjour,

la méthode PATCH n'est pas actuellement supportée.
Il est possible d'ouvrir une demande à IBM dans ce sens : https://www.ibm.com/developerworks/rfe/

Re: RESPONSEMSG qui contient un - lors d'une 400

Posté : ven. 23 avr. 2021, 08:43:00
par raphael1980
Hello,

À votre avis, la fonction HTTPPOSTCLOBVERBOSE pourrait être responsable d’un nombre de diagnostics trop élevé ?

Erreur = The maximum number of stacked diagnostics areas has been exceeded.

Et d’un gonflement temporaire d’espace disque que le système libère par la suite ?

On fait par moment plusieurs centaines d’attaques sur l’API externe pour mettre à jour une série d’objets ou d’indicateurs sur ces objets.

Merci pour votre retour.
Raphaël.

Re: RESPONSEMSG qui contient un - lors d'une 400

Posté : ven. 23 avr. 2021, 21:21:43
par nbonnet
Bonjour,

les diagnostics sont généralement dûs à des erreurs de conversion, division par zéro etc ...
Est-ce dans l'exploitation du résultat de l'appel plutôt que l'appel lui-même ?

Re: RESPONSEMSG qui contient un - lors d'une 400

Posté : sam. 24 avr. 2021, 08:36:25
par raphael1980
Lundi, on fera une révision de la PS. Peut-être qu'un point m'échappe qui génère une erreur dans le post traitement API.

Ici je l'ai fait tourner, +- 400 appels à l'API, j'ai grillé 2% d'utilisation du disque qui sera nettoyé cette nuit par le système.

Est-ce que tu crois que cela peut venir du fait qu'on exploite : <httpHeader includeErrorMsg="true">

On a besoin de la réponse de l'API pour savoir quand on doit faire un POST ou PATCH ou quand le token d'autorisation est expiré.

Merci pour tes retours.

Re: RESPONSEMSG qui contient un - lors d'une 400

Posté : dim. 25 avr. 2021, 20:46:29
par nbonnet
Bonjour,

non aucun rapport pour moi.
Pas de rapport entre l'appel de l'API et la consommation de disque, sauf éventuellement des exceptions Java qui provoquent des dumps de la JVM ?

Re: RESPONSEMSG qui contient un - lors d'une 400

Posté : lun. 26 avr. 2021, 07:25:03
par raphael1980
C’est peut-être une piste.

Si on n’active pas le verbose, on reçoit effectivement un message java quand les api retournent autre chose qu’un joli 200.

On est passé en verbose et includeErrorMsg pour traiter les réponses qui ne sont pas des 200 et éviter d’avoir un message java qui arrête le traitement.

Mais en fait, on l’a peut-être toujours en arrière plan.

Cependant, je ne sais pas encore comment vérifier ça.

Re: RESPONSEMSG qui contient un - lors d'une 400

Posté : lun. 26 avr. 2021, 09:41:18
par raphael1980
je pense que c'est effectivement les messages d'erreur java.

Si on le fait sans le verbose et on a ce genre de message :

CRM/TRTCLITMPTEST sur le serveur XXX Erreur = Java stored procedure or user-defined function SYSTOOLS.HTTPGETCLOB, specific name HTTPG00005 aborted with an exception "java.io.FileNotFoundException:https://gld--dev.my.salesforce.com/serv ... XX/XXX/XXX". SQLCODE = -4302 SQLSTATE = 38000 Job = 640429/QUSER/QZDASOINIT

Quand on le fait en verbose avec le includeErrorMsg , on a le joli message de retour de l'API mais sans doute que derrière, il continue à faire ce genre de message ce qui provoque le dépassement du diagnostic et le fait d'utiliser de l'espace disque.