Pagina 1 di 1

Windev Mobile REST and Encode/Decode

Inviato: mar nov 16, 2021 6:01 pm
da StefanoWx
Ho un codice che funziona, ma restituisce caratteri cinesi (in allegato), dove sbaglio ?
bufNewAspetto is Buffer
vAsp is Variant

h is httpRequest
h.Method = httpGet
h.URL = "http://localhost:8026/Aspetto"

r is httpResponse = RESTSend(h)
IF r.StatusCode = 200 THEN
Info(r.Content)
// SEGNALA WARNING When converting a buffer into Unicode string, the number of bytes in the buffer is not compatible with a Unicode
// string. Therefore, the buffer may not contain any Unicode string.
ELSE
Info("Errore", r.Content)
END

Grazie in anticipo

Re: Windev Mobile REST

Inviato: mar nov 16, 2021 6:14 pm
da marcov
Ciao,
avevo un errore uguale, ma io "cifro" la risposta per offuscare i dati che sono al interno di un JSON ma sono formattati in xml, comunque ho risolto lato cliente indicando che la risposta è ANSI string

Codice: Seleziona tutto

      
      		vResultJSON		is a JSON		= cMyResponse..Content
		sFromServer		is ANSI string
		vParameters		is Variant
		sResp			is ANSI string
		//Assegno il JSON  lo decodifico,Trasformo in Variabile e Poi in XML	
		sFromServer	= cMyResponse..Content
		vParameters	= JSONToVariant(vResultJSON)
		// Decodifico		
		sResp		= Decode(vParameters.Resp,encodeBASE64NoCR)
attenzione che anche lato server potresti avere problemi io codifico il tutto quindi lo devo decodificare, ma questo e il codice lato server

Codice: Seleziona tutto

	
		MyStringInUTF8 is Buffer = UTF8ToAnsi(sarrivato)
		sstringadec is ANSI string =Decode(sarrivato,encodeBASE64NoCR)
ovviamente dopo averlo ricevuto dal dispositivo.
sono alle primissime armi con WinDev quindi non ho trovato di meglio. comunque funziona.

Re: Windev Mobile REST

Inviato: mar nov 16, 2021 6:19 pm
da StefanoWx
Grazie ci provo

Re: Windev Mobile REST

Inviato: mar nov 16, 2021 9:47 pm
da marcov
Scusa dimenticavo, attento perché il simulatore e il vero Android hanno comportamenti differenti a livello di codifica delle stringe.

Re: Windev Mobile REST

Inviato: mer nov 17, 2021 3:41 pm
da StefanoWx
Risolto così, grazie

Codice: Seleziona tutto

bufNewAspetto	is Buffer
sRisp is ANSI string
h is httpRequest
r is httpResponse

h.URL		= "http://localhost:8026/Aspetto" 
h.Method		= httpGet
h.ContentType	= "application/json"
h.Content		= bufNewAspetto

r = RESTSend(h)

sRisp	= r.Content
IF r.StatusCode = 200 THEN
	Info(sRisp)
ELSE
	Info("Errore", sRisp)
END

Re: Windev Mobile REST

Inviato: mer nov 17, 2021 4:15 pm
da marcov
Ottimo, ricordati di testarlo anche su un dispositivo vero perché il simulatore ha un comportamento differente.

Buon Lavoro