Page 1 of 1
Petición POST webview
![Post Post](./styles/prosilver/imageset/icon_post_target.gif)
Posted:
Sun Aug 13, 2023 10:47 am
by leandro
Hola buenos días de nuevo
Podemos hacer peticiones de tipo POST desde webview?
Re: Petición POST webview
![Post Post](./styles/prosilver/imageset/icon_post_target.gif)
Posted:
Sun Aug 13, 2023 1:02 pm
by Antonio Linares
Estimado Arevalo,
El ejemplo webviewlogin.prg realiza una petición tipo POST al identificar al usuario, te refieres a eso ?
Re: Petición POST webview
![Post Post](./styles/prosilver/imageset/icon_post_target.gif)
Posted:
Mon Aug 14, 2023 12:42 am
by leandro
Antonio buenas noches, gracias por responder
No, me refería a eso, lo que pasa es que necesito pasar a una dirección web, un json demasiado grande y por GET el servidor me dice que no esta permitido por que la url es demasiado larga, entonces pensé que envés de enviarlo por GET, pueda enviar mencionado archivo al servidor mediante una petición POST.
Espero hacerme entender,
de antemano gracias
Re: Petición POST webview
![Post Post](./styles/prosilver/imageset/icon_post_target.gif)
Posted:
Mon Aug 14, 2023 5:18 am
by Antonio Linares
Estimado Leandro,
Has considerado usar Curl ?
Re: Petición POST webview
![Post Post](./styles/prosilver/imageset/icon_post_target.gif)
Posted:
Mon Aug 14, 2023 4:03 pm
by leandro
Has considerado usar Curl ?
Si en algún momento lo intentamos, pero desafortunadamente no funciona con xharbour.
Antonio, lo que pasa es que necesito enviarle cierta información al servidor, para que haga un proceso y me devuelva otra información y mostrarla después de procesada en el webview.
Re: Petición POST webview
![Post Post](./styles/prosilver/imageset/icon_post_target.gif)
Posted:
Mon Aug 14, 2023 4:24 pm
by cmsoft
Leandro:
Puedes tambien enviar mediante el objet Createobject("MSXML2.ServerXMLHTTP") y luego leer por get la informacion deseada, pero ahi tienes que tener el control del servidor web y de tu aplicacion, pero creo por lo que lei antes que ese es tu caso
Re: Petición POST webview
![Post Post](./styles/prosilver/imageset/icon_post_target.gif)
Posted:
Mon Aug 14, 2023 6:37 pm
by leandro
Cesar gracias por responder
Pues es que por GET lo estamos haciendo de momento, pero como mencione anteriormente, el problema es que el servidor (si tenemos el control) nos dice que la url es demasiado larga.
- Code: Select all Expand view
cEp := hb_jsonEncode( RsToHash( oRsEp ) )
cEp := hb_base64encode(cEp,len(cEp))
oWebVwLg := TWebView():New(, oWid:hWnd )
oWebVwLg:Navigate( "https://nuestraurl/index?aep="+cEp ) //ESTA CADENA PUEDE SER DEMASIADO LARGA, "CREO" QUE SI LA ENVIAMOS POR POST NO VAMOS A TENER PROBLEMAS CON EL TAMAÑO
oWebVwLg:SetUserAgent( "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.53 Mobile Safari/537.36" )
oWebVwLg:Bind( "SendToFWH" )
oWebVwLg:bOnBind = { | cJson, cCalls | EVAL(cbLog, cJson ) }
Re: Petición POST webview
![Post Post](./styles/prosilver/imageset/icon_post_target.gif)
Posted:
Mon Aug 14, 2023 8:40 pm
by cmsoft
Leandro:
Yo digo algo asi
- Code: Select all Expand view
STATIC oOle
FUNCTION Main()
LOCAL aRecord, cJson
oOle := Createobject("MSXML2.ServerXMLHTTP")
aRecord := hash()
aRecord["ID"] = 1
aRecord["DATO2"] = "MIDATO2"
aRecord["DATO3"] = "MIDATO3"
cJson := hb_jsonEncode(aRecord,.f.)
SendPostToUrl( "https://nuestraurl/miapi", cJson, "application/json")
oWebVwLg := TWebView():New(, oWid:hWnd )
oWebVwLg:Navigate( "https://nuestraurl/vista?ID="+aRecord["ID"] )
RETURN nil
STATIC Function SendPostToUrl( cUrl, cParams,cContentType,cAuthorization )
Local cRet:="",uRet
default cContentType:="application/json"
default cAuthorization:=""
oOle:Open( 'POST', cUrl, .f. )
oOle:SetRequestHeader( "Content-Type",cContentType)
if !empty(cAuthorization)
oOle:SetRequestHeader( "Authorization",cAuthorization)
end if
oOle:Send( cParams )
//SysRefresh()
cRet:=""
IF !oOle:ResponseBody = NIL
hb_jsonDecode(oOle:ResponseBody,@cRet)
ELSE
cRet := oOle:ResponseText
ENDIF
Return cRet
Entonces, en tu servidor espera en la ruta miapi un formulario tipo post que hace un proceso con los datos que le pasas en aRecord
Y luego en tu servidor, en la ruta vista, busca esos datos que ya se guardaron en el servidor y los procesa para mostrarlos
No se si fui claro