|
FORUMS PROFESSIONNELS WINDEV, WEBDEV et WINDEV Mobile |
| | | | | |
Accueil → WINDEV 25 → WX - Enviar um arquivo JSON por “REST” para um WebService (SMS Short Code) |
WX - Enviar um arquivo JSON por “REST” para um WebService (SMS Short Code) |
Débuté par Boller, 16 mai 2016 21:44 - 1 réponse |
| |
| | | |
|
| |
Membre enregistré 3 742 messages |
|
Posté le 16 mai 2016 - 21:44 |
Prezados,
Na última semana comecei a elaborar uma rotina em Windev para consumir um WebService o qual esperava receber algumas informações e um arquivo JSON. A ideia do SMS-FACIL é o de uma central que faz a comunicação junto às operadoras mobile para enviar SMS profissional. As informações necessárias são:
• Fone (destinatário) • Mensagem até 160 caracteres • Hash de identificação • Código do Produto
O endereço do ws é http://www.nazatechnology.com.br/gateway/send. O método de comunicação a ser utilizado é POST. O primeiro aspecto necessário ao nosso estudo se detém na elaboração de um arquivo JSON, o qual é iniciado e terminado pelo caractere “[“ (abre colchete) e “]” (fecha colchete). Já os registros são circundados com chaves e as colunas separadas por vírgula. O Adriano Boller em uma demo fez a seguinte sequência:
sJsonMensagem is string = “[ { "target":"554192472007", "message":"Mensagem de teste 1" }, { "target":"554192510031", "message":"Mensagem de teste 2" }
]”
Ao observar podemos tirar algumas conclusões:
Além de ser uma string convencional e ser circundado com colchetes e cada “registro” ser circundado por chaves, temos os registros separados por vírgula.
Para montar essa mesma sequência, dispomos no Windev de uma função denominada “VariantToJSON” a qual montará cada um dos registros com tantas colunas quanto for declarada, então:
bPrim is boolean = True sJSON is string = "[" + CR vSMS_JSON is Variant vSMS_JSON.target = “556299873535” vSMS_JSON.message = “Nao Use esse exemplo, porque não tenho a menor ideia a quem pertenca” sJSON += (bPrim=True?"" ELSE ","+ CR) + VariantToJSON(vSMS_JSON) bPrim = False vSMS_JSON.target = “556299213555” vSMS_JSON.message = “Um segundo exemplo de SMS, acentos somente o ‘é’ e o ‘ç’” sJSON += VariantToJSON(vSMS_JSON)
sJSON += CR + "]"
[ { "target":"556299873535", "message":" Não use esse exemplo, porque não tenho a menor ideia a quem pertença " }, { "target":"556299213555", "message":" Um segundo exemplo de SMS, acentos somente o ‘é’ e o ‘ç’" }
]
As especificações de “HEADER” cabeçalho devem ser aquelas anteriormente apontadas, acrescentando-se o tamanho final da variável que conterá o arquivo JSON. Então:
cMyRequest is restRequest cMyRequest ..URL = " http://www.nazatechnology.com.br/gateway/sendjson/index.php" cMyRequest..ContentType = "application/json" cMyRequest..Content = sJsonMensagem cMyRequest..UserAgent = "SMS_FACIL" cMyRequest..Header["Content-Length"] = Length(sJsonMensagem) cMyRequest..Header["Hash"] = “10b9231267e5844f485572e2c3ae14b1” cMyRequest..Header["Produto"] = "10" cMyRequest..Header["Host"] = " www.nazatechnology.com.br" cMyRequest..Method = httpPost cMyResponse is restResponse = RESTSend ( cMyRequest ) IF ErrorOccurred THEN fSaveText(fExeDir+"\erro.log", ErrorInfo ( errFullDetails ) + CR + sJsonMensagem) END
A sequência de informações a serem enviadas ao servidor são essas e colocadas devidamente em cada propriedade. O Método utilizado foi o REST através da utilização da função “RESTSend”. Como última informação, descobrimos que se não informar o nome do arquivo (“index.php”) não há a devida comunicação.
Espero que esse pequeno trabalho possa contribuir para a velocidade de desenvolvimento da rotina de comunicação com o ws do SMS-FÁCIL
Fonte: - por Nazareno Fleury (Goiânia)
Curitiba, 16/05/2016 – por José de Mello Júnior
Muito Obrigado pelo compartilhamento desse exemplo
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 9949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | |
| |
Membre enregistré 3 742 messages |
|
Posté le 08 juin 2016 - 01:30 |
Exemplo de Serialize
http://help.windev.com/en-US/…
ST_Product is structure
sName is string <Serialize ="ProductName"> nID is int nQty is int mValue is currency <Serialize ="Amount"> END ST_Person is structure sLastName is string <Serialize ="LastName"> sFirstName is string <Serialize ="FirstName"> dDOB is Date arrProducts is array of ST_Product END arrPersons is array of ST_Person
nPersonSubscript is int nProductSubscript is int nPersonSubscript = ArrayAdd(arrPersons) arrPersons[nPersonSubscript].sLastName = "Doe" arrPersons[nPersonSubscript].sFirstName = "John" arrPersons[nPersonSubscript].dDOB = "19880516"
nProductSubscript = ArrayAdd(arrPersons[mPersonSubscript].arrProducts) arrPersons[nPersonSubscript].arrProducts[nProductSubscript].mValue = 89.9 arrPersons[nPersonSubscript].arrProducts[nProductSubscript].nID = 12345724 arrPersons[nPersonSubscript].arrProducts[nProductSubscript].nQty = 5 arrPersons[nPersonSubscript].arrProducts[nProductSubscript].sName = "Red jacket"
bufJson is Buffer Serialize(arrPersons.bufJson, psdJSON
HTTPCreateForm("JSONForm") HTTPAddParameter("JSONForm", "JSONPERSON", bufJson) HTTPSendForm("JSONForm", ... "http://MySite/MySite_WEB/US/PAGE_Persons.awp", httpPost)
Exemplo de Deserialize
http://help.windev.com/en-US/…
MyArray is array of strings bufResult is Buffer
Add(MyArray, "WINDEV") Add(MyArray, "WEBDEV") Add(MyArray, "WINDEV MOBILE")
Serialize(MyArray, bufResult, psdJSON)
MyRebuiltArray is array of strings Deserialize(MyRebuiltArray, bufResult, psdJSON)
Exemplo de Structure
http://help.windev.com/en-US/…
ProductRef is structure SCode is int PdtCode is fixed string on 10 END
ProductRef is structure SCode is int PdtCode is fixed string on 10 END
Armchair is ProductRef
ProductRef is structure SCode is int PdtCode is fixed string on 10 END
Armchair is ProductRef Armchair:SCode = 7 Armchair:PdtCode = "Furniture"
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 9949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/Message modifié, 08 juin 2016 - 01:31 |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|