Estimados,
Estoy trabajando con webservices y tengo la siguiente inquietud al momento de utilizar los metodos POST y GET.
El web service esta alojado en esta URL
http://ws.medicamentosrothlin.com.ar/?f=ws
Para probar el servicio y depurar consultas se puede usar esta pagina:
http://ws.medicamentosrothlin.com.ar/test
El servicio espera dos parámetros, uno GET, siempre es el mismo f=ws, de modo que hay que llamar a la url de esta manera http://ws.medicamentosrothlin.com.ar/?f=ws
y el otro parámetro es POST, mensaje. El mensaje se envía en formato xml de acuerdo a la siguiente especificación:
EJEMPLO DE MENSAJE DE LLAMADA InteraccionFarmacologica (se puede colocar en la pagina de pruebas)
<?xml version="1.0" encoding="utf-8"?>
<Interdrugs>
<Login>
<Cliente>COLFARMRN</Cliente>
<Terminal>SISTEMAS</Terminal>
<Codigo>RNFM00001</Codigo>
<Clave>ZZZZ</Clave>
</Login>
<Transaccion>
<!--Se establece la funcion InteraccionFarmacologica para consultar interacciones entre medicamentos-->
<Operacion>InteraccionFarmacologica</Operacion>
<!--Se indica la version de la funcion que se esta llamando-->
<Version>1.0.1</Version>
<!--Define el formato de salida-->
<Salida>xml</Salida>
</Transaccion>
<Mensaje>
<Parametros>
<Diccionario>AlfaBeta</Diccionario>
<NRO_REG>35142</NRO_REG><!--IBUPIRAC 600 MG-->
<NRO_REG>12907</NRO_REG><!--ENALAPRIL RICHET-->
</Parametros>
</Mensaje>
</Interdrugs>
EJEMPLO XML de respuesta
<?xml version="1.0" encoding="utf-8"?>
<Interdrugs>
<Login>
<Cliente>COLFARMRN</Cliente>
<Terminal>SISTEMAS</Terminal>
<Codigo>RNFM00001</Codigo>
<Clave>ZZZZ</Clave>
<Ok>1</Ok>
</Login>
<Transaccion>
<!--Se establece la funcion InteraccionFarmacologica para consultar interacciones entre medicamentos-->
<Operacion>InteraccionFarmacologica</Operacion>
<!--Se indica la version de la funcion que se esta llamando-->
<Version>1.0.1</Version>
<!--Define el formato de salida-->
<Salida>xml</Salida>
</Transaccion>
<Mensaje>
<Parametros>
<Diccionario>AlfaBeta</Diccionario>
<NRO_REG>35142</NRO_REG><!--IBUPIRAC 600 MG-->
<NRO_REG>12907</NRO_REG><!--ENALAPRIL RICHET-->
</Parametros>
</Mensaje>
<Log/>
<MensajeRespuesta>
<Transaccion>
<!--Se indica la fecha y la hora en la que se proceso la consulta-->
<FechaHora>04/03/16 01:03:53</FechaHora>
<!--Se informa un identificador de la consulta para un posible seguimiento de errores-->
<Id>2645</Id>
</Transaccion>
<!-- En caso de generarse algun error en la consulta el mismo es devuelto de la siguiente manera:
<Errores>
<Error>
<Codigo>1001</Codigo>
<Descripcion>Mensaje xml mal formado. Opening and ending tag mismatch: Parametrosf line 18 and Parametros
</Descripcion>
</Error>
</Errores>
-->
<!--Respuesta de la funcion llamada (los elementos de salida pueden variar de acuerdo a la consulta,
eso se ira indicando a medida que las funciones se implementen)-->
<InteraccionFarmacologica>
<Observaciones>Interacciones encontradas: 1</Observaciones>
<Item>
<Nombre>Interaccion</Nombre>
<Valor>1</Valor>
<Droga1>IBUPROFENO</Droga1>
<Droga2>ENALAPRIL</Droga2>
<Medicamento1>IBUPIRAC 600 MG</Medicamento1>
<Medicamento2>ENALAPRIL RICHET</Medicamento2>
<Descripcion>
Los AINE pueden disminuir el efecto antihipertensivo y natriurético de los IECA,
el mecanismo puede implicar la atenuación de la efectividad de los agentes antihipertensivos
secundario a la interferencia con la producción de prostaglandinas vasodilatadoras y natriuréticas
que son estimuladas por los agentes antihipertensivos. Si bien no se conocen interacciones
farmacocinéticas significativas entre los AINE y los inhibidores de la ECA, la combinación
de los AINE y los inhibidores de la ECA pueden producir efectos secundarios tales como
bradicardia marcada debido a hiperpotasemia. Se debe monitorear la eficacia antihipertensiva
en especial en la insuficiencia renal, en pacientes ancianos, en pacientes deshidratados.
Cuando el uso concomitante es necesario, monitorear la eficacia antihipertensiva de los IECA
y la función renal periódicamente para detectar signos de insuficiencia renal.
</Descripcion>
</Item>
</InteraccionFarmacologica>
</MensajeRespuesta>
</Interdrugs>
/////////////////////////////////////////////////////////////////////////////////////////////////////
ESTE ES UN EJEMPLO DE MI FUNCION CONSULTAR() QUE NO OBTIENE LOS VALORES DE RESULTADO COMO EN EL EJEMPLO
/////////////////////////////////////////////////////////////////////////////////////////////////////
//.......................
FUNCTION Consultar()
//......................
local odoc,ohttp,cUrl,cXml
//..crea objeto XML
TRY
oHttp:=createobject( 'Microsoft.XMLHTTP')
CATCH
try
oHttp:=createobject( 'Microsoft.XMLHTTP')
catch
Alert('Error en la creacion del objeto Microsoft.XMLHTTP : ' + Ole2TxtError())
return .F.
end
END
//.. Creo Objeto XML
TRY
oDoc := CreateObject( 'MSXML2.DOMDocument' )
CATCH
try
oDoc := CreateObject( 'MSXML2.DOMDocument' )
catch
Alert('Error en la creacion del objeto MSXML2.DOMDocument : ' + Ole2TxtError())
return .F.
end
END
cUrl:="http://ws.medicamentosrothlin.com.ar/?f=ws"
cXml:=''
cXml+='<?xml version="1.0" encoding="utf-8"?>' + CRLF
cXml+='<Interdrugs>' + CRLF
cXml+='<Login>' + CRLF
cXml+=' <Cliente>COLFARMRN</Cliente>' + CRLF
cXml+=' <Terminal>SISTEMAS</Terminal>' + CRLF
cXml+=' <Codigo>RNFM00001</Codigo>' + CRLF
cXml+=' <Clave>ZZZZ</Clave>' + CRLF
cXml+='</Login>' + CRLF
cXml+=' <Transaccion>' + CRLF
cXml+=' <Operacion>InteraccionFarmacologica</Operacion>' + CRLF
cXml+=' <Version>1.0.1</Version>' + CRLF
cXml+=' <Salida>xml</Salida>' + CRLF
cXml+=' </Transaccion>' + CRLF
cXml+=' <Mensaje>' + CRLF
cXml+=' <Parametros>' + CRLF
cXml+=' <Diccionario>AlfaBeta</Diccionario>' + CRLF
cXml+=' <NRO_REG>35142</NRO_REG>' + CRLF
cXml+=' <NRO_REG>12907</NRO_REG>' + CRLF
cXml+=' </Parametros>' + CRLF
cXml+=' </Mensaje>' + CRLF
cXml+='</Interdrugs>' + CRLF
PREGUNTA : Como debería hacer para que GET y POST funcionen correctamente y obtener una respuesta del webservice como la del ejemplo...??
///......................
oHttp:Open( 'POST' , cUrl , .F. )
oDoc:LoadXML( cXml ) //carga el documento a xml
oHttp:send(oDoc:xml) // envio xml
cRespuesta:= oHttp:responseText
? cRespuesta
//.....................
retu .t.
Muchas gracias,
Saludos Mariano
Webservices
Webservices
Last edited by mterraz on Mon Apr 25, 2016 1:30 pm, edited 1 time in total.
Re: Webservices
ESTE ES CODIGO FUNCIONANDO CON WEBSERVICE
///////////////////////////////////////
FUNCTION Main(cDatos)
///////////////////////////////////////
local cNew:='',x,lOk:=.T.,curl
local cToken:=";",cProd,cProd2,cprod3
aProd:={}
if( empty(cDatos) .OR. cDatos=NIL )
RETU .T.
QUIT
endif
TRY
oHttp:= CreateObject( 'MSXML2.XMLHTTP')
CATCH
MsgInfo("Error al crear el objeto HTTP")
retu .t.
END
x:=1
WHILE .T.
cNew:=substr( cDatos,1,at('<END>',cDatos)+4 )
cProd := strtoken(cNew,1,cToken)
cProd2 := strtoken(cNew,2,cToken)
cProd3 := strtoken(cNew,3,cToken)
Aadd(aProd,cProd)
Aadd(aProd,cProd2)
Aadd(aProd,cProd3)
cDatos:= substr(cDatos,at('<END>',cDatos)+5)
if( at('<END>',cDatos) = 0)
exit
endif
x+=1
ENDDO
cXml:='mensaje=<?xml version="1.0" encoding="utf-8"?>' + CRLF
cXml+='<Interdrugs>' + CRLF
cXml+='<Login>' + CRLF
cXml+=' <Cliente>COLFARMRN</Cliente>' + CRLF
cXml+=' <Terminal>SISTEMAS</Terminal>' + CRLF
cXml+=' <Codigo>RNFM00001</Codigo>' + CRLF
cXml+=' <Clave>ZZZ</Clave>' + CRLF
cXml+='</Login>' + CRLF
cXml+=' <Transaccion>' + CRLF
cXml+=' <Operacion>InteraccionFarmacologica</Operacion>' + CRLF
cXml+=' <Version>1.0.1</Version>' + CRLF
cXml+=' <Salida>xml</Salida>' + CRLF
cXml+=' </Transaccion>' + CRLF
cXml+=' <Mensaje>' + CRLF
cXml+=' <Parametros>' + CRLF
cXml+=' <Diccionario>AlfaBeta</Diccionario>' + CRLF
for x:=1 to Len(aProd)
cXml+=' <NRO_REG>'+cvaltochar(aProd[x])+'</NRO_REG>' + CRLF
next
cXml+=' </Parametros>' + CRLF
cXml+=' </Mensaje>' + CRLF
cXml+='</Interdrugs>'
Memowrit('SendVentasCli_Req.xml',cXml)
cUrl:="http://ws.medicamentosrothlin.com.ar/?f=ws"
TRY
oHttp:Open( 'POST' , "http://ws.medicamentosrothlin.com.ar/?f=ws" ,.F. )
CATCH
MsgInfo("Error al conectarse con el WebService!")
END
oHttp:setRequestHeader('Content-type', 'application/x-www-form-urlencoded')
oHttp:SetRequestHeader( 'Connection:', 'Keep-Alive' )
oHttp:SetRequestHeader( 'Content-length: ', len( cXml ) )
TRY
oHttp:send(cXml) // envia al WS
CATCH
MsgInfo("Error al enviar los productos al WebService!")
END
cRespuesta:= oHttp:responseText
Memowrit( 'SendVentasCli_Res.xml',cRespuesta)
oHttp:=NIL
RETU .T.
Saludos espero les sea de utilidad
Mariano
///////////////////////////////////////
FUNCTION Main(cDatos)
///////////////////////////////////////
local cNew:='',x,lOk:=.T.,curl
local cToken:=";",cProd,cProd2,cprod3
aProd:={}
if( empty(cDatos) .OR. cDatos=NIL )
RETU .T.
QUIT
endif
TRY
oHttp:= CreateObject( 'MSXML2.XMLHTTP')
CATCH
MsgInfo("Error al crear el objeto HTTP")
retu .t.
END
x:=1
WHILE .T.
cNew:=substr( cDatos,1,at('<END>',cDatos)+4 )
cProd := strtoken(cNew,1,cToken)
cProd2 := strtoken(cNew,2,cToken)
cProd3 := strtoken(cNew,3,cToken)
Aadd(aProd,cProd)
Aadd(aProd,cProd2)
Aadd(aProd,cProd3)
cDatos:= substr(cDatos,at('<END>',cDatos)+5)
if( at('<END>',cDatos) = 0)
exit
endif
x+=1
ENDDO
cXml:='mensaje=<?xml version="1.0" encoding="utf-8"?>' + CRLF
cXml+='<Interdrugs>' + CRLF
cXml+='<Login>' + CRLF
cXml+=' <Cliente>COLFARMRN</Cliente>' + CRLF
cXml+=' <Terminal>SISTEMAS</Terminal>' + CRLF
cXml+=' <Codigo>RNFM00001</Codigo>' + CRLF
cXml+=' <Clave>ZZZ</Clave>' + CRLF
cXml+='</Login>' + CRLF
cXml+=' <Transaccion>' + CRLF
cXml+=' <Operacion>InteraccionFarmacologica</Operacion>' + CRLF
cXml+=' <Version>1.0.1</Version>' + CRLF
cXml+=' <Salida>xml</Salida>' + CRLF
cXml+=' </Transaccion>' + CRLF
cXml+=' <Mensaje>' + CRLF
cXml+=' <Parametros>' + CRLF
cXml+=' <Diccionario>AlfaBeta</Diccionario>' + CRLF
for x:=1 to Len(aProd)
cXml+=' <NRO_REG>'+cvaltochar(aProd[x])+'</NRO_REG>' + CRLF
next
cXml+=' </Parametros>' + CRLF
cXml+=' </Mensaje>' + CRLF
cXml+='</Interdrugs>'
Memowrit('SendVentasCli_Req.xml',cXml)
cUrl:="http://ws.medicamentosrothlin.com.ar/?f=ws"
TRY
oHttp:Open( 'POST' , "http://ws.medicamentosrothlin.com.ar/?f=ws" ,.F. )
CATCH
MsgInfo("Error al conectarse con el WebService!")
END
oHttp:setRequestHeader('Content-type', 'application/x-www-form-urlencoded')
oHttp:SetRequestHeader( 'Connection:', 'Keep-Alive' )
oHttp:SetRequestHeader( 'Content-length: ', len( cXml ) )
TRY
oHttp:send(cXml) // envia al WS
CATCH
MsgInfo("Error al enviar los productos al WebService!")
END
cRespuesta:= oHttp:responseText
Memowrit( 'SendVentasCli_Res.xml',cRespuesta)
oHttp:=NIL
RETU .T.
Saludos espero les sea de utilidad
Mariano
Last edited by mterraz on Mon Apr 25, 2016 1:30 pm, edited 1 time in total.
Re: Webservices
Mariano, que resultados obtienes de la consulta ?
Saludos
Saludos
Re: Webservices
Hola Horacio, lo importante mas que nada es la forma en que realiza la consulta con el webservice.
Todo lo que envie es a modo de ejemplo, como conectarse a un webservice y obtener una respuesta, esa era la idea del ejemplo.
Saludos Mariano
Todo lo que envie es a modo de ejemplo, como conectarse a un webservice y obtener una respuesta, esa era la idea del ejemplo.
Saludos Mariano
Re: Webservices conecion vias POST
Hola Amigos nececito ayuda veo que tienen el hilo para XML, pero me piden con informacion de Archivos JSON
codigo token
8d19d8c7c1f6402687720eab85cd57a54f5a7a3fa163476bbcf381ee2b5e0c69
Deberá usar ese código TOKEN para autentificarse en la URL https://www.nubefact.com/api/beta/invoices via HTTP Authentication
enviando VIA POST en el HEADER la siguiente información:
Authorization Token token="8d19d8c7c1f6402687720eab85cd57a54f5a7a3fa163476bbcf381ee2b5e0c69"
Content-Type application/json
luego enviar un formulario con este contenido.
prueba.json
{
"invoice": {
"tipo": "1",
"serie": "F001",
"entidad_numero_de_documento": "20553510661",
"entidad_tipo_de_documento": "6",
"entidad_denominacion": "LLAMA.PE SA",
"entidad_direccion": "CALLE LIBERTAD 116 LIBERTAD - LIMA - PERU",
"entidad_email": "hola@llama.pe",
"fecha_de_emision": "05-05-2016",
"fecha_de_vencimiento": "",
"moneda": "1",
"tipo_de_cambio": "",
"operacion_gratuita": "false",
"total_gravada": "1000",
"total_inafecta": "",
"total_exonerada": "",
"total_igv": "180",
"total_gratuita": "",
"descuento_global": "",
"total_otros_cargos": "10",
"total": "1190",
"detraccion": "false",
"observaciones": "",
"documento_que_se_modifica_tipo": "",
"documento_que_se_modifica_serie": "",
"documento_que_se_modifica_numero": "",
"tipo_de_nota_de_credito": "",
"tipo_de_nota_de_debito": "",
"enviar_automaticamente_a_la_sunat": "true",
"enviar_automaticamente_al_cliente": "true",
"cancelado": "true",
"codigo_unico": "RUC20150800013",
"invoice_lines": [
{
"unit_code": "ZZ",
"cantidad": "2",
"tipo_de_igv": "1",
"valor_unitario": "250",
"precio_unitario": "590",
"subtotal": "500",
"igv": "90",
"total": "590",
"descripcion": "MENU DE DIA"
},
{
"unit_code": "ZZ",
"cantidad": "1",
"tipo_de_igv": "1",
"valor_unitario": "500",
"precio_unitario": "590",
"subtotal": "500",
"igv": "90",
"total": "590",
"descripcion": "INKA KOLA DE 1.5 LITROS"
}
]
}
}
luego recibo un mensaje con los siguientes datos
{
"invoice": {
"serie": "F001",
"numero": 7,
"aceptada_por_sunat": true,
"sunat_description": "La Factura numero F001-7, ha sido aceptada",
"sunat_note": null,
"sunat_responsecode": "0",
"codigo_de_barras": "20219719443 | 01 | F001 | 000007 | 180.00 | 1,190.00 | 05/05/2016 | 6 | 20547551398 | UNv/nKSCy08PFSwAR02wZvqXVcs= | nGEDbsDZsXnrWjf//kpu2BnGeK+DmKZjoSGnCW3na1lki7pktxfDVe8ihxm9\ncrhNi5EPFmdTLcbxcc+W+lCpDj9h8LeIz5MlhdPPEmpZUfLDaBhytf/fruZg\nadQi0WvCjHqW3Z7CRgbJh7t40Wvz9FbPfZhs121baF+fwYwYQpY43lzJR+MR\nMmMeoSVB6kL9TFilUF1EoZ4NTBeFX2hEF9QVkPwqcvcznXIFMmhdG7pvX/p+\nryAYCDbMq4kcmiyqP0xgqL6wHjLiURq1eQa6JssMPm4a1Fag83xSmt62YjYL\ncwvHyG0Asu40jXPOA22kYyFLbGsI94/9ExSKZsPK2w== |"
}
}
COMO VEN NO ES XML.
No se por donde empesar
Gracias por la ayuda
codigo token
8d19d8c7c1f6402687720eab85cd57a54f5a7a3fa163476bbcf381ee2b5e0c69
Deberá usar ese código TOKEN para autentificarse en la URL https://www.nubefact.com/api/beta/invoices via HTTP Authentication
enviando VIA POST en el HEADER la siguiente información:
Authorization Token token="8d19d8c7c1f6402687720eab85cd57a54f5a7a3fa163476bbcf381ee2b5e0c69"
Content-Type application/json
luego enviar un formulario con este contenido.
prueba.json
{
"invoice": {
"tipo": "1",
"serie": "F001",
"entidad_numero_de_documento": "20553510661",
"entidad_tipo_de_documento": "6",
"entidad_denominacion": "LLAMA.PE SA",
"entidad_direccion": "CALLE LIBERTAD 116 LIBERTAD - LIMA - PERU",
"entidad_email": "hola@llama.pe",
"fecha_de_emision": "05-05-2016",
"fecha_de_vencimiento": "",
"moneda": "1",
"tipo_de_cambio": "",
"operacion_gratuita": "false",
"total_gravada": "1000",
"total_inafecta": "",
"total_exonerada": "",
"total_igv": "180",
"total_gratuita": "",
"descuento_global": "",
"total_otros_cargos": "10",
"total": "1190",
"detraccion": "false",
"observaciones": "",
"documento_que_se_modifica_tipo": "",
"documento_que_se_modifica_serie": "",
"documento_que_se_modifica_numero": "",
"tipo_de_nota_de_credito": "",
"tipo_de_nota_de_debito": "",
"enviar_automaticamente_a_la_sunat": "true",
"enviar_automaticamente_al_cliente": "true",
"cancelado": "true",
"codigo_unico": "RUC20150800013",
"invoice_lines": [
{
"unit_code": "ZZ",
"cantidad": "2",
"tipo_de_igv": "1",
"valor_unitario": "250",
"precio_unitario": "590",
"subtotal": "500",
"igv": "90",
"total": "590",
"descripcion": "MENU DE DIA"
},
{
"unit_code": "ZZ",
"cantidad": "1",
"tipo_de_igv": "1",
"valor_unitario": "500",
"precio_unitario": "590",
"subtotal": "500",
"igv": "90",
"total": "590",
"descripcion": "INKA KOLA DE 1.5 LITROS"
}
]
}
}
luego recibo un mensaje con los siguientes datos
{
"invoice": {
"serie": "F001",
"numero": 7,
"aceptada_por_sunat": true,
"sunat_description": "La Factura numero F001-7, ha sido aceptada",
"sunat_note": null,
"sunat_responsecode": "0",
"codigo_de_barras": "20219719443 | 01 | F001 | 000007 | 180.00 | 1,190.00 | 05/05/2016 | 6 | 20547551398 | UNv/nKSCy08PFSwAR02wZvqXVcs= | nGEDbsDZsXnrWjf//kpu2BnGeK+DmKZjoSGnCW3na1lki7pktxfDVe8ihxm9\ncrhNi5EPFmdTLcbxcc+W+lCpDj9h8LeIz5MlhdPPEmpZUfLDaBhytf/fruZg\nadQi0WvCjHqW3Z7CRgbJh7t40Wvz9FbPfZhs121baF+fwYwYQpY43lzJR+MR\nMmMeoSVB6kL9TFilUF1EoZ4NTBeFX2hEF9QVkPwqcvcznXIFMmhdG7pvX/p+\nryAYCDbMq4kcmiyqP0xgqL6wHjLiURq1eQa6JssMPm4a1Fag83xSmt62YjYL\ncwvHyG0Asu40jXPOA22kYyFLbGsI94/9ExSKZsPK2w== |"
}
}
COMO VEN NO ES XML.
No se por donde empesar
Gracias por la ayuda
Re: Webservices
Buenas
Te dejo 2 ejemplos muy simples para que veas la luz;
Te dejo 2 ejemplos muy simples para que veas la luz;
Code: Select all
function test_json_decode()
local x
Local aHabs, cHab
Local cJSON := '{"habitaciones": ["1","2","3","4"]}'
x := hb_jsondecode( cJSON, @aHabs )
for each chab in aHabs["habitaciones"]
alert( chab)
next
return nil
function test_json_encode()
Local hHabs := { "habitaciones" => { "1","2","3","4" } }
Alert( hb_jsonEncode( hHabs, .F. ) )
return nil
Saludos
Rafa Carmona ( rafa.thefullARROBAgmail.com___quitalineas__)
Rafa Carmona ( rafa.thefullARROBAgmail.com___quitalineas__)
Re: Webservices
Hola Thefull..
Gracias por responder. este es el ejemplo que estoy haciendo. pero no logro que estoy haciendo mal..
#include "fivewin.ch"
doc = CreateObject( "MSXML2.DOMDocument" )
ohttp = CreateObject( "MSXML2.XMLHTTP" )
ohttp:Open( "POST" ,"https://www.nubefact.com/api/beta/invoices", .F. )
oHttp:SetRequestHeader( "Connection:", "Keep-Alive" )
ohttp:SetRequestHeader( "Content-Type" ,"application/json" )
ohttp:SetRequestHeader( "Authorization token","e1409d7a0cb44732ab58d3ac33488283d8717f3caeb442eabc50394bb42e902f" )
Ctext:=MEMOREAD("dioni.json")
doc:LoadXML(ctext) //ctext
TRY
ohttp:Send( doc:xml )
CATCH
msginfo("No Se Pudo Enviar Documento XML","Intente Nuevamente")
return .t.
END
response:=ohttp:responseText
Memowrit( 'SendVentasCli_Res.xml',Response)
Ctext1:=MEMOREAD("SendVentasCli_Res.xml")
?ctext1
Retu .t.
contenido de del archivo...
*******************************************
dioni.json
{
"invoice": {
"tipo": "1",
"serie": "F001",
"entidad_numero_de_documento": "20553510661",
"entidad_tipo_de_documento": "6",
"entidad_denominacion": "LLAMA.PE SA",
"entidad_direccion": "CALLE LIBERTAD 116 LIBERTAD - LIMA - PERU",
"entidad_email": "hola@llama.pe",
"fecha_de_emision": "05-05-2016",
"fecha_de_vencimiento": "",
"moneda": "1",
"tipo_de_cambio": "",
"operacion_gratuita": "false",
"total_gravada": "1000",
"total_inafecta": "",
"total_exonerada": "",
"total_igv": "180",
"total_gratuita": "",
"descuento_global": "",
"total_otros_cargos": "10",
"total": "1190",
"detraccion": "false",
"observaciones": "",
"documento_que_se_modifica_tipo": "",
"documento_que_se_modifica_serie": "",
"documento_que_se_modifica_numero": "",
"tipo_de_nota_de_credito": "",
"tipo_de_nota_de_debito": "",
"enviar_automaticamente_a_la_sunat": "true",
"enviar_automaticamente_al_cliente": "true",
"cancelado": "true",
"codigo_unico": "RUC20150800013",
"invoice_lines": [
{
"unit_code": "ZZ",
"cantidad": "2",
"tipo_de_igv": "1",
"valor_unitario": "250",
"precio_unitario": "590",
"subtotal": "500",
"igv": "90",
"total": "590",
"descripcion": "MENU DE DIA"
},
{
"unit_code": "ZZ",
"cantidad": "1",
"tipo_de_igv": "1",
"valor_unitario": "500",
"precio_unitario": "590",
"subtotal": "500",
"igv": "90",
"total": "590",
"descripcion": "INKA KOLA DE 1.5 LITROS"
}
]
}
}
********************************************************************
la respuesta que debo de recibir es..
repuesta.json
{
"invoice": {
"serie": "F001",
"numero": 7,
"aceptada_por_sunat": true,
"sunat_description": "La Factura numero F001-7, ha sido aceptada",
"sunat_note": null,
"sunat_responsecode": "0",
"codigo_de_barras": "20219719443 | 01 | F001 | 000007 | 180.00 | 1,190.00 | 05/05/2016 | 6 | 20547551398 | UNv/nKSCy08PFSwAR02wZvqXVcs= | nGEDbsDZsXnrWjf//kpu2BnGeK+DmKZjoSGnCW3na1lki7pktxfDVe8ihxm9\ncrhNi5EPFmdTLcbxcc+W+lCpDj9h8LeIz5MlhdPPEmpZUfLDaBhytf/fruZg\nadQi0WvCjHqW3Z7CRgbJh7t40Wvz9FbPfZhs121baF+fwYwYQpY43lzJR+MR\nMmMeoSVB6kL9TFilUF1EoZ4NTBeFX2hEF9QVkPwqcvcznXIFMmhdG7pvX/p+\nryAYCDbMq4kcmiyqP0xgqL6wHjLiURq1eQa6JssMPm4a1Fag83xSmt62YjYL\ncwvHyG0Asu40jXPOA22kYyFLbGsI94/9ExSKZsPK2w== |"
}
}
*****************************
Gracias por responder. este es el ejemplo que estoy haciendo. pero no logro que estoy haciendo mal..
#include "fivewin.ch"
doc = CreateObject( "MSXML2.DOMDocument" )
ohttp = CreateObject( "MSXML2.XMLHTTP" )
ohttp:Open( "POST" ,"https://www.nubefact.com/api/beta/invoices", .F. )
oHttp:SetRequestHeader( "Connection:", "Keep-Alive" )
ohttp:SetRequestHeader( "Content-Type" ,"application/json" )
ohttp:SetRequestHeader( "Authorization token","e1409d7a0cb44732ab58d3ac33488283d8717f3caeb442eabc50394bb42e902f" )
Ctext:=MEMOREAD("dioni.json")
doc:LoadXML(ctext) //ctext
TRY
ohttp:Send( doc:xml )
CATCH
msginfo("No Se Pudo Enviar Documento XML","Intente Nuevamente")
return .t.
END
response:=ohttp:responseText
Memowrit( 'SendVentasCli_Res.xml',Response)
Ctext1:=MEMOREAD("SendVentasCli_Res.xml")
?ctext1
Retu .t.
contenido de del archivo...
*******************************************
dioni.json
{
"invoice": {
"tipo": "1",
"serie": "F001",
"entidad_numero_de_documento": "20553510661",
"entidad_tipo_de_documento": "6",
"entidad_denominacion": "LLAMA.PE SA",
"entidad_direccion": "CALLE LIBERTAD 116 LIBERTAD - LIMA - PERU",
"entidad_email": "hola@llama.pe",
"fecha_de_emision": "05-05-2016",
"fecha_de_vencimiento": "",
"moneda": "1",
"tipo_de_cambio": "",
"operacion_gratuita": "false",
"total_gravada": "1000",
"total_inafecta": "",
"total_exonerada": "",
"total_igv": "180",
"total_gratuita": "",
"descuento_global": "",
"total_otros_cargos": "10",
"total": "1190",
"detraccion": "false",
"observaciones": "",
"documento_que_se_modifica_tipo": "",
"documento_que_se_modifica_serie": "",
"documento_que_se_modifica_numero": "",
"tipo_de_nota_de_credito": "",
"tipo_de_nota_de_debito": "",
"enviar_automaticamente_a_la_sunat": "true",
"enviar_automaticamente_al_cliente": "true",
"cancelado": "true",
"codigo_unico": "RUC20150800013",
"invoice_lines": [
{
"unit_code": "ZZ",
"cantidad": "2",
"tipo_de_igv": "1",
"valor_unitario": "250",
"precio_unitario": "590",
"subtotal": "500",
"igv": "90",
"total": "590",
"descripcion": "MENU DE DIA"
},
{
"unit_code": "ZZ",
"cantidad": "1",
"tipo_de_igv": "1",
"valor_unitario": "500",
"precio_unitario": "590",
"subtotal": "500",
"igv": "90",
"total": "590",
"descripcion": "INKA KOLA DE 1.5 LITROS"
}
]
}
}
********************************************************************
la respuesta que debo de recibir es..
repuesta.json
{
"invoice": {
"serie": "F001",
"numero": 7,
"aceptada_por_sunat": true,
"sunat_description": "La Factura numero F001-7, ha sido aceptada",
"sunat_note": null,
"sunat_responsecode": "0",
"codigo_de_barras": "20219719443 | 01 | F001 | 000007 | 180.00 | 1,190.00 | 05/05/2016 | 6 | 20547551398 | UNv/nKSCy08PFSwAR02wZvqXVcs= | nGEDbsDZsXnrWjf//kpu2BnGeK+DmKZjoSGnCW3na1lki7pktxfDVe8ihxm9\ncrhNi5EPFmdTLcbxcc+W+lCpDj9h8LeIz5MlhdPPEmpZUfLDaBhytf/fruZg\nadQi0WvCjHqW3Z7CRgbJh7t40Wvz9FbPfZhs121baF+fwYwYQpY43lzJR+MR\nMmMeoSVB6kL9TFilUF1EoZ4NTBeFX2hEF9QVkPwqcvcznXIFMmhdG7pvX/p+\nryAYCDbMq4kcmiyqP0xgqL6wHjLiURq1eQa6JssMPm4a1Fag83xSmt62YjYL\ncwvHyG0Asu40jXPOA22kYyFLbGsI94/9ExSKZsPK2w== |"
}
}
*****************************
Re: Webservices
Buenas
Veo que lo que tienes que enviar es un JSON.
Si haces esto ;
Parece que lo que estas enviando sería un XML. No se que hace exactamente el ActiveX de M$, pero intentar poner;
Saludos
Veo que lo que tienes que enviar es un JSON.
Si haces esto ;
Code: Select all
Ctext:=MEMOREAD("dioni.json")
doc:LoadXML(ctext) //ctext
TRY
ohttp:Send( doc:xml )
Code: Select all
Ctext:=MEMOREAD("dioni.json")
TRY
ohttp:Send( cText )
Saludos
Rafa Carmona ( rafa.thefullARROBAgmail.com___quitalineas__)
Rafa Carmona ( rafa.thefullARROBAgmail.com___quitalineas__)
Re: Webservices
Hola Thefull...
Funciono perfecto mil gracias por tu ayuda... dejo el codigo funcionando..
#include "fivewin.ch"
doc = CreateObject( "MSXML2.DOMDocument" )
ohttp = CreateObject( "MSXML2.XMLHTTP" )
ohttp:Open( "POST" ,"https://www.nubefact.com/api/beta/invoices",.F.)
oHttp:SetRequestHeader("cache-control", "no-cache")
ohttp:SetRequestHeader("content-type", "application/json" )
ohttp:SetRequestHeader("authorization", "Token token=14ea9eac34ba4y8bb3f94ae309c3a03a17180f747ead46029014eff1a453922d" )
Ctext:=MEMOREAD("dioni.json")
?ctext //ver lo que se envia
TRY
ohttp:Send( cText )
CATCH
msginfo("No Se Pudo Enviar Documento JSON","Intente Nuevamente")
return .t.
END
response:=ohttp:responseText
Memowrit( 'SendVentasCli_Res.json',Response)
Ctext1:=MEMOREAD("SendVentasCli_Res.json")
?ctext1 // ver respuesta del servidor .
Funciono perfecto mil gracias por tu ayuda... dejo el codigo funcionando..
#include "fivewin.ch"
doc = CreateObject( "MSXML2.DOMDocument" )
ohttp = CreateObject( "MSXML2.XMLHTTP" )
ohttp:Open( "POST" ,"https://www.nubefact.com/api/beta/invoices",.F.)
oHttp:SetRequestHeader("cache-control", "no-cache")
ohttp:SetRequestHeader("content-type", "application/json" )
ohttp:SetRequestHeader("authorization", "Token token=14ea9eac34ba4y8bb3f94ae309c3a03a17180f747ead46029014eff1a453922d" )
Ctext:=MEMOREAD("dioni.json")
?ctext //ver lo que se envia
TRY
ohttp:Send( cText )
CATCH
msginfo("No Se Pudo Enviar Documento JSON","Intente Nuevamente")
return .t.
END
response:=ohttp:responseText
Memowrit( 'SendVentasCli_Res.json',Response)
Ctext1:=MEMOREAD("SendVentasCli_Res.json")
?ctext1 // ver respuesta del servidor .