|
| Iniciado por Eric, 23,dic. 2019 18:07 - 3 respuestas |
| |
| | | |
|
| |
Miembro registrado 91 mensajes |
|
| Publicado el 23,diciembre 2019 - 18:07 |
Bonjour,
J'utilise (enfin... j'aimerais) l'api allmysms pour envoyer des sms. J'ai une erreur dans la réponse du httprequete.
La réponse du httprequete est "err 400 bad request" "Your browser sent a invalid request"
si je récupère l'url d'envoi utilisée (grâce au pressepapier) et que je la colle dans firefox, ça fonctionne. voir (ci-dessous) le code de construction et d'envoi de la requête. Je ne comprends pas où cela pêche.
sLogin est une chaîne sLogin="societe"
sApiKey est une chaîne sApiKey="maclef"
sUrl est une chaîne sUrl ="https://api.allmysms.com/http/9.0/sendSms/"
sFlux est une chaîne
sReturnformat est une chaîne sReturnformat="JSON"
sParametrePost est une chaîne sFlux=[ { "DATA": { "MESSAGE": "Bonjour, nous sommes très heureux de vous compter parmi nos clients", "TPOA": "EXPED", "LOWCOST": "0", "DYNAMIC": "0", "SMS": %1 { "MOBILEPHONE": "MONTEL" } %2 }} ]
sFlux = ChaîneConstruit(sFlux,Caract(91),Caract(93)) sParametrePost = ChaîneConstruit("?login=%1&apiKey=%2&smsData=%3&returnformat=%4&mobile=MONTEL",sLogin, sApiKey, sFlux, sReturnformat)
sUrl += sParametrePost
VersPressePapier(surl)
SI httpRequête(sUrl, "", "")=Vrai ALORS Info(HTTPDonneRésultat(httpRésultat)) SINON Erreur(ErreurInfo()) FIN
et ce que contient le presse papier :
//contenu du presse-papier https://api.allmysms.com/http/9.0/sendSms/…": {"MESSAGE": "Bonjour, nous sommes très heureux de vous compter parmi nos clients!", "TPOA": "expediteur", "LOWCOST": "0", "DYNAMIC": "0", "SMS": [ { "MOBILEPHONE": "montel" } ] } }&returnformat=JSON&mobile=montel
Si quelqu'un a une idée ou vois une anerie dans mon code, je suis preneur.
Merci à vous
Eric |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 953 mensajes |
|
| Publicado el 24,diciembre 2019 - 09:46 |
bonjour Eric,
vous dites, lorsque je colle l'adresse utilisée sous FireFox çà fonctionne, il faut bien voir qu'une URL ne doit pas comporter certain caractères. Firefox fera automatiquement une conversion des caractères 'interdit'.
sous Windev, vous avez la fonction URLEncode()
https://doc.pcsoft.fr/fr-FR/?3024040&name=URLEncode
je n'ai pas trop regardé votre code, mais dans un premier temps faite juste un petit test en ajoutant un URLEncode() sur votre variable sURL juste avant de faire votre HTTPRequete() |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 1.640 mensajes |
|
| Publicado el 24,diciembre 2019 - 09:57 |
Salut !
J'utilise aussi AllMySms, voici le code de la classe que j'ai faite :
C_SMS est une Classe PUBLIQUE m_sMessage est une chaîne
m_sExpediteur est une chaîne sur11 m_nCodeRetour est un entier m_sMessageRetour est une chaîne m_sDestinataire est une chaîne sur10 m_sRequeteEnvoyee est une chaîne,Sérialise=Faux
PRIVÉE m_sApiKeyest une chaîne m_sLoginest une chaîne
CONSTANT
sFlux= [ { "DATA": { "MESSAGE": "%1", "TPOA": "%2", "SMS" : [ { "MOBILEPHONE" : "%3" }] } }
]
sParametres="login=%1&apiKey=%2&smsData=%3" sUrl="https://api.allmysms.com/http/9.0/sendSms/" FIN FIN
Procedure Constructeur(sApiKey est une chaîne,sLogin est une chaîne) m_sApiKey=sApiKey m_sLogin=sLogin
Procedure Envoyer() SI CheckDataFirst() ALORS sTel est une chaîne=CheckTelFormat(m_sDestinataire) SI VérifieExpressionRégulière(sTel,"0[6-7][0-9]{8,8}") ALORS sRequete est une chaîne=ChaîneConstruit(sFlux,URLEncode(m_sMessage),m_sExpediteur,sTel) sRequete=Remplace(sRequete,"&","%26") sRequete=Remplace(sRequete,"?","%3F") sParametrePost est une chaîne=ChaîneConstruit("login=%1&apiKey=%2&smsData=%3",m_sLogin,m_sApiKey,sRequete) m_sRequeteEnvoyee =s ParametrePost SI httpRequête(sUrl,"","",sParametrePost)=Vrai ALORS m_nCodeRetour=1 m_sMessageRetour=HTTPDonneRésultat() RENVOYER Vrai SINON m_nCodeRetour=0 m_sMessageRetour=ErreurInfo() RENVOYER Faux FIN
SINON m_nCodeRetour= -1 m_sMessageRetour="N° de téléphone incorrect "+sTel RENVOYER Faux FIN
SINON m_nCodeRetour= -1 m_sMessageRetour="Informations fournies incorrectes" RENVOYER Faux FIN
Procedure PROTÉGÉE CheckDataFirst() :booléen bRretour est un booléen=Vrai
RENVOYER bRretour
Procedure CheckTelFormat(LOCAL sTel) :chaîne sTel=Remplace(sTel," ","") sTel=Remplace(sTel,"/","") sTel=Remplace(sTel,".","") sTel=Remplace(sTel,"_","") sTel=Remplace(sTel,"+33","0")
RENVOYER sTel Mensaje modificado, 24,diciembre 2019 - 10:01 |
| |
| |
| | | |
|
| | |
| |
Miembro registrado 91 mensajes |
|
| Publicado el 24,diciembre 2019 - 10:44 |
Merci à vous deux. J'avais en effet un problème d'encodage du message. Je vais regarder de plus près le code fourni gentiment par François; il m' a l'air plus précis que le mien.
Question à François : Utilises tu les webhook pour suivre les envois? si oui ecris avec webdev en awp ?
encore merci, j'ai pu avancer dans mon projet. Cordialement,
Eric |
| |
| |
| | | |
|
| | | | |
| | |
|