HTTPCLIENT con PB 2019 R2
les pego un codigo para consumir servicio web........................RESTClient lrc_datos
CoderObject lnv_Coder
string ls_url, ls_data, ls_response
integer li_respuesta
string ls_auth_string, ls_encoded_auth,ls_respuestas
blob lblb_authorizationBlob
// **1. Inicializar el objeto RESTClient**
lrc_datos = CREATE RESTClient
// **2. Establecer la URL del servicio web**
// cuenta individual
//ls_url = "https://XXXXXX" // Reemplaza con la URL real del servicio web
// **3. Preparar los datos a enviar (JSON en este caso)**
(si usas dw hay una forma directa de generar el json desde el w)
ls_documento='~"numeroDocumento~": ~"'+ls_nro_documento+'~"'
ls_cliente='~"nroCliente~": ~"'+string(ll_conexion_id)+'~"'
ls_razon_social='~"razonSocial~": ~"'+ls_nombre+'~"'
ls_tipo_tarifa='~"tarifa~": ~"'+ls_tarifa+'~"'
ls_medidor='~"nroMedidor~": ~"'+ls_nro_medidor+'~"'
ls_direccion_suministro='~"direccionSuministro~": ~"'+ls_direccion+'~"'
ls_data = "{"+ls_documento+","+ ls_cliente+","+ls_razon_social+","+ls_tipo_tarifa+","+ls_medidor+","+ls_direccion_suministro +"}," // Ejemplo de datos JSON. ¡IMPORTANTE! Usa comillas ~" para delimitar.
// **4. Codificar las credenciales (usuario y contraseña) en Base64**
CoderObject lo_coderobject
lnv_Coder = CREATE CoderObject //Instancia del objeto CoderObject
/ls_auth_string = "api:XXXXXX" // Usuario:Contraseña
// Convierte la cadena a un Blob
lblb_authorizationBlob = Blob(ls_auth_string,EncodingUTF8!)
// Codifica el Blob a Base64
ls_encoded_auth = lnv_Coder.Base64URLEncode(lblb_authorizationBlob)
//ls_encoded_auth = "ASDASDAS" // Usuario:Contraseña encriptada
// **5. Establecer los encabezados de la solicitud**
lrc_datos.SetRequestHeaders("Content-Type: application/json;charset=UTF-8~r~n" + &
"Cache-Control: no-cache~r~n" + &
"Authorization: Basic " + ls_encoded_auth) // Encabezado de autenticación Basic
// **6. Enviar la solicitud POST (Usar PostRequest para enviar datos)**
li_respuesta = lrc_datos.SendPostRequest(ls_url, ls_data, ls_response)
// **7. Manejar la respuesta**
IF li_respuesta <> 1 THEN
MessageBox("Error", "Error al enviar información al servidor web. Código de error: " + String(li_respuesta))
RETURN
END IF
// Verificar el código de estado HTTP y el contenido de la respuesta
If lrc_datos.GetResponseStatusCode() <> 200 Then
MessageBox("Error del Servidor", "El servidor devolvió un error: " + String(lrc_datos.GetResponseStatusCode()) + "~r~nRespuesta: " + ls_response)
// Aquí puedes analizar ls_response para obtener más detalles del error, si el servicio web los proporciona.
END IF
if ls_response<>"" then
ls_respuestas = ls_respuestas + ls_response +"~r~n"
end if
// **8. Destruir el objeto RESTClient y CoderObject**
DESTROY lrc_datos
Destroy lnv_Coder