Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Colaboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-11-2011
ruedabeat2003 ruedabeat2003 is offline
Miembro
 
Registrado: mar 2007
Posts: 66
Poder: 18
ruedabeat2003 Va por buen camino
Errores en la creación de Cliente WebService

Hola a todos, sucede que estoy tratando de crear un cliente de WebService desde File-->New-->Other-->webservice-->wsdl Importer (Delphi 7), la dirección de la especificación del WSDL es: https://www2.ventanillaunica.gob.mx/...veService?wsdl Así se genera mi unidad y tras poner el componente HTTPRIO y configurar las propiedades WSDLLOCATION, SERVICE y PORT, agregando mi nueva unidad en el uses de mi unidad principal, procedo a compilar pero obtengo una serie de errores que hacen referencia al tipo de Parametros que estoy enviando en mis peticiones al WebService. ¿Eso indica que el WSDL es incorrecto, que falta definir algo, o que tengo que hacer algun tipo de modificación a la unidad de mi Webserver-cliente recien generado? Por lo que he leído en tutoriales acerca de la creación de Clientes de WebServices, todo deberia ser tan transparente como indicar la dirección del WSDL y unos cuantos Clicks. Anexo el código generado y los errores arrojados al momento de compilar. Gracias de antemano por la ayuda.

Errores:
[Error] RecibirCoveService.pas(45): Undeclared identifier: 'solicitarRecibirCoveServicio'
[Error] RecibirCoveService.pas(45): Undeclared identifier: 'solicitarRecibirCoveServicioResponse'
[Error] RecibirCoveService.pas(46): Undeclared identifier: 'solicitarRecibirRelacionFacturasIAServicio'
[Error] RecibirCoveService.pas(46): Undeclared identifier: 'solicitarRecibirRelacionFacturasIAServicioResponse'
[Error] RecibirCoveService.pas(47): Undeclared identifier: 'solicitarRecibirRelacionFacturasNoIAServicio'
[Error] RecibirCoveService.pas(47): Undeclared identifier: 'solicitarRecibirRelacionFacturasNoIAServicioResponse'
[Fatal Error] AAADAMM3.dpr(139): Could not compile used unit 'RecibirCoveService.pas'



Código:
// ************************************************************************ //
// The types declared in this file were generated from data read from the
// WSDL File described below:
// WSDL     : https://www2.ventanillaunica.gob.mx/ventanilla/RecibirCoveService?wsdl
// Encoding : UTF-8
// Version  : 1.0
// (30/11/2011 01:28:50 p.m. - 1.33.2.5)
// ************************************************************************ //

unit RecibirCoveService;

interface

uses InvokeRegistry, SOAPHTTPClient, Types, XSBuiltIns;

type

  // ************************************************************************ //
  // The following types, referred to in the WSDL document are not being represented
  // in this file. They are either aliases[@] of other types represented or were referred
  // to but never[!] declared in the document. The types from the latter category
  // typically map to predefined/known XML or Borland types; however, they could also
  // indicate incorrect WSDL documents that failed to declare or import a schema type.
  // ************************************************************************ //
  // !:solicitarRecibirCoveServicio - "http://www.ventanillaunica.gob.mx/cove/ws/oxml/"
  // !:solicitarRecibirCoveServicioResponse - "http://www.ventanillaunica.gob.mx/cove/ws/oxml/"
  // !:solicitarRecibirRelacionFacturasIAServicio - "http://www.ventanillaunica.gob.mx/cove/ws/oxml/"
  // !:solicitarRecibirRelacionFacturasIAServicioResponse - "http://www.ventanillaunica.gob.mx/cove/ws/oxml/"
  // !:solicitarRecibirRelacionFacturasNoIAServicio - "http://www.ventanillaunica.gob.mx/cove/ws/oxml/"
  // !:solicitarRecibirRelacionFacturasNoIAServicioResponse - "http://www.ventanillaunica.gob.mx/cove/ws/oxml/"


  // ************************************************************************ //
  // Namespace : http://www.ventanillaunica.gob.mx/cove/ws/service/
  // soapAction: http://www.ventanillaunica.gob.mx/%operationName%
  // transport : http://schemas.xmlsoap.org/soap/http
  // style     : document
  // binding   : IReceptorEndpointBinding
  // service   : RecibirCoveService
  // port      : IReceptorBinding
  // URL       : https://www2.ventanillaunica.gob.mx:5002/ventanilla/RecibirCoveService
  // ************************************************************************ //
  IReceptor = interface(IInvokable)
  ['{65A41149-B829-ABA1-4D2E-609AEDEE08A2}']
    function  RecibirCove(const peticion: solicitarRecibirCoveServicio): solicitarRecibirCoveServicioResponse; stdcall;
    function  RecibirRelacionFacturasIA(const peticion: solicitarRecibirRelacionFacturasIAServicio): solicitarRecibirRelacionFacturasIAServicioResponse; stdcall;
    function  RecibirRelacionFacturasNoIA(const peticion: solicitarRecibirRelacionFacturasNoIAServicio): solicitarRecibirRelacionFacturasNoIAServicioResponse; stdcall;
  end;

function GetIReceptor(UseWSDL: Boolean=System.False; Addr: string=''; HTTPRIO: THTTPRIO = nil): IReceptor;


implementation

function GetIReceptor(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): IReceptor;
const
  defWSDL = 'https://www2.ventanillaunica.gob.mx/ventanilla/RecibirCoveService?wsdl';
  defURL  = 'https://www2.ventanillaunica.gob.mx:5002/ventanilla/RecibirCoveService';
  defSvc  = 'RecibirCoveService';
  defPrt  = 'IReceptorBinding';
var
  RIO: THTTPRIO;
begin
  Result := nil;
  if (Addr = '') then
  begin
    if UseWSDL then
      Addr := defWSDL
    else
      Addr := defURL;
  end;
  if HTTPRIO = nil then
    RIO := THTTPRIO.Create(nil)
  else
    RIO := HTTPRIO;
  try
    Result := (RIO as IReceptor);
    if UseWSDL then
    begin
      RIO.WSDLLocation := Addr;
      RIO.Service := defSvc;
      RIO.Port := defPrt;
    end else
      RIO.URL := Addr;
  finally
    if (Result = nil) and (HTTPRIO = nil) then
      RIO.Free;
  end;
end;


initialization
  InvRegistry.RegisterInterface(TypeInfo(IReceptor), 'http://www.ventanillaunica.gob.mx/cove/ws/service/', 'UTF-8');
  InvRegistry.RegisterDefaultSOAPAction(TypeInfo(IReceptor), 'http://www.ventanillaunica.gob.mx/%operationName%');
  InvRegistry.RegisterInvokeOptions(TypeInfo(IReceptor), ioDocument);
  InvRegistry.RegisterInvokeOptions(TypeInfo(IReceptor), ioLiteral);

end.
Responder Con Cita
  #2  
Antiguo 30-11-2011
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.562
Poder: 25
egostar Va camino a la fama
Hola

Es tu versión de Delphi, con Delphi2007 o mayor ya puedes generar correctamente la clase que es importada por el WSDL Importer.

Saludos
Responder Con Cita
  #3  
Antiguo 30-11-2011
ruedabeat2003 ruedabeat2003 is offline
Miembro
 
Registrado: mar 2007
Posts: 66
Poder: 18
ruedabeat2003 Va por buen camino
Delphi 7 a Delphi 2007

Creo que on otra PC tenemos instalado el Delphi 2007. Mi pregunta es: Si hago la importacion de la Clase en Delphi 2007 y me la traigo a mi aplicación en Delphi 7 será todo transparente? Pienso que así debería ser.
Responder Con Cita
  #4  
Antiguo 01-12-2011
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.562
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por ruedabeat2003 Ver Mensaje
Creo que on otra PC tenemos instalado el Delphi 2007. Mi pregunta es: Si hago la importacion de la Clase en Delphi 2007 y me la traigo a mi aplicación en Delphi 7 será todo transparente? Pienso que así debería ser.
Tal vez no sea tan transparente, sobre todo que el problema de la compatibilidad hacia atrás es que depende en gran medida de los tipos de datos nuevos que pudiese haber en las nuevas versiones, no se si Delphi7 ya maneja los tipos de datos TXSDecimal y TXSDate que hasta donde he visto son usados en el servicio web.

Saludos
Responder Con Cita
  #5  
Antiguo 01-12-2011
ruedabeat2003 ruedabeat2003 is offline
Miembro
 
Registrado: mar 2007
Posts: 66
Poder: 18
ruedabeat2003 Va por buen camino
Probando con WSDL Importer

Gracias por la ayuda, voy a hacer la prueba y reporto en el foro los resultados que obtenga. Esta es la primera experiencia que tengo con Webservices y creo que voy a tener varias preguntas. Es bueno tener como soporte el Club Delphi y sus miembros. Saludos.
Responder Con Cita
  #6  
Antiguo 22-12-2011
dado dado is offline
Miembro
 
Registrado: may 2010
Posts: 76
Poder: 15
dado Va por buen camino
Oye ya lograste conectarte a la ventanilla unica?

Yo ya me conecte pero tengo problemas para crear la cadena original, no hay esquemas bien definidos
Responder Con Cita
  #7  
Antiguo 22-12-2011
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.562
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por dado Ver Mensaje
Oye ya lograste conectarte a la ventanilla unica?

Yo ya me conecte pero tengo problemas para crear la cadena original, no hay esquemas bien definidos
¿ Que problemas has tenido ?

Saludos
Responder Con Cita
  #8  
Antiguo 22-12-2011
dado dado is offline
Miembro
 
Registrado: may 2010
Posts: 76
Poder: 15
dado Va por buen camino
Ya envio el documento y como respuesta obtengo :

Cita:
<?xml version='1.0' encoding='UTF-8'?><S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"><S:Header><wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" S:mustUnderstand="1"><wsu:Timestamp xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"><wsu:Created>2011-12-22T04:44:34Z</wsu:Created><wsu:Expires>2011-12-22T04:45:34Z</wsu:Expires></wsu:Timestamp></wsse:Security></S:Header><S:Body><solicitarRecibirCoveServicioResponse xmlns="http://www.ventanillaunica.gob.mx/cove/ws/oxml/"><numeroDeOperacion>5705</numeroDeOperacion><horaRecepcion>2011-12-21T22:44:34.119-06:00</horaRecepcion><mensajeInformativo>El ingreso de su archivo ha sido ingresado exitosamente</mensajeInformativo></solicitarRecibirCoveServicioResponse></S:Body></S:Envelope>
Y todo bien hasta aqui, pero despues de unos minutos recibo en mi correo electronico lo siguiente

Cita:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<respuestaPeticion xsi:schemaLocation="/mx/gob/ventanillaunica/www/cove/ws/wsdls/RecibirCove.xsd" xmlns="http://www.ventanillaunica.gob.mx/cove/ws/oxml/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<numeroOperacion>5701</numeroOperacion>
<horaRecepcion>2011-12-21T22:22:03.238-06:00</horaRecepcion>
<respuestasOperaciones>
<numeroFacturaORelacionFacturas>con una mercancia simple</numeroFacturaORelacionFacturas>
<contieneError>true</contieneError>
<errores>
<mensaje>Cadena original : La cadena original es inválida</mensaje>
<mensaje>Firma Electrónica : El RFC del usuario es distinto al del certificado.</mensaje>
</errores>
</respuestasOperaciones>
<leyenda>Tiene 90 d&amp;iacute;as a partir de esta fecha para utilizar su comprobante de valor electr&amp;oacute;nico, si en ese tiempo no es utilizado, ser&amp;aacute; dado de baja del sistema.</leyenda>
</respuestaPeticion>
Ya detecte que no reconoce mi nodo de "mercancias", si no le pongo ese nodo no me marca error de cadena original, pero si pongo un dato de mercancia por mas simple me marca error
Responder Con Cita
  #9  
Antiguo 22-12-2011
dado dado is offline
Miembro
 
Registrado: may 2010
Posts: 76
Poder: 15
dado Va por buen camino
Si has intentado conectarte puedes ver que NO HAY ESQUEMA XSLT para crear la cadena, tiene que ser "a pata" y eso da muchos errores

Por cierto para la conexion con Delphi uso la libreria Synapse, con Indy no pude conectarme nunca,
Responder Con Cita
  #10  
Antiguo 22-12-2011
ruedabeat2003 ruedabeat2003 is offline
Miembro
 
Registrado: mar 2007
Posts: 66
Poder: 18
ruedabeat2003 Va por buen camino
Hola despues de que estuve detenido por no generar mi Cliente de WebService, finalmente lo pude importar utilizando el WSDL de la version de Delphi 2007. Hasta ese momento estabamos con la idea de que teniamos que generar una cadena XML y era ese el parametro que ibamos a pasarle al Webservice, pero Oh error, las nuevas clases generadas por Delphi desde el WSDL nos indicaron que hay que pasarla en un Objeto de acuerdo al tipo de documento a validar. Estoy actualmente creando mi objeto y he enviado el objeto(incompleto, precisamento no lleva info de mercancias) por el WebService pero he recibido error:
Código:
 'Error on verifying  message against security policy Error Code:1000'
Estoy terminando de completar la info de mi objeto y te comento del resultado. De que otra manera podemos estar en contacto?
Responder Con Cita
  #11  
Antiguo 22-12-2011
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.562
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por dado Ver Mensaje
Si has intentado conectarte puedes ver que NO HAY ESQUEMA XSLT para crear la cadena, tiene que ser "a pata" y eso da muchos errores

Por cierto para la conexion con Delphi uso la libreria Synapse, con Indy no pude conectarme nunca,
Vaya, pues me está respondiendo lo mismo, valída la recepción del REQUEST pero después invalida el archivo por la cadena original. Haré algunas pruebas en cuanto tenga un epacio y si logro resultados satisfactorios los comento.

Saludos
Responder Con Cita
  #12  
Antiguo 22-12-2011
ruedabeat2003 ruedabeat2003 is offline
Miembro
 
Registrado: mar 2007
Posts: 66
Poder: 18
ruedabeat2003 Va por buen camino
Aprovechando el viaje, estoy atorado en la asignacion de valores a variables del tipo TXSDecimal, tengo algo así:
Código:
     las_mercancias[i].valorUnitario.AsBcd := qAux.fieldByName('cantidad_comer').AsBCD;
Pero me marca un Access Violation, que me recomiendas?

Saludos, estamos en contacto.
Responder Con Cita
  #13  
Antiguo 22-12-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por ruedabeat2003 Ver Mensaje
Aprovechando el viaje, estoy atorado en la asignacion de valores a variables del tipo TXSDecimal, tengo algo así:
Código:
     las_mercancias[i].valorUnitario.AsBcd := qAux.fieldByName('cantidad_comer').AsBCD;
Pero me marca un Access Violation, que me recomiendas?
Hola ruedabeat2003.

Te hago dos observaciones:
  • Preguntas distintas = hilos distintos
  • No repetir preguntas con el mismo contenido en distintos hilos. Ya he contestado esta, tu última consulta aquí
.

Saludos y gracias por tu colaboración.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #14  
Antiguo 22-12-2011
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.562
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por ruedabeat2003 Ver Mensaje
Aprovechando el viaje, estoy atorado en la asignacion de valores a variables del tipo TXSDecimal, tengo algo así:
Código:
     las_mercancias[i].valorUnitario.AsBcd := qAux.fieldByName('cantidad_comer').AsBCD;
Pero me marca un Access Violation, que me recomiendas?

Saludos, estamos en contacto.
Yo haría algo mas o menos así:

Código Delphi [-]
var
  xsDec: TXSDecimal;

begin
      xsDec := TXSDecimal.Create;
      xsDec.DecimalString  := Format('%f', [qAux.fieldByName('cantidad_comer').AsFloat]);
      las_mercancias[i].valorUnitario  := xsDec;
end;

Aunque seria bueno que algún moderador dividiera estos "posts" en uno individual, recuerda que cada pregunta un hilo.
Responder Con Cita
  #15  
Antiguo 22-12-2011
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.562
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por ecfisa Ver Mensaje
Hola ruedabeat2003.

Te hago dos observaciones:
  • Preguntas distintas = hilos distintos
  • No repetir preguntas con el mismo contenido en distintos hilos. Ya he contestado esta, tu última consulta aquí
.

Saludos y gracias por tu colaboración.
En efecto, totalmente de acuerdo estimado ecfisa.

Saludos
Responder Con Cita
  #16  
Antiguo 22-12-2011
David Gonzalez David Gonzalez is offline
Registrado
 
Registrado: mar 2008
Posts: 4
Poder: 0
David Gonzalez Va por buen camino
Buen dia:

Estoy trabajando tambien con el COVE y me fui por usar el asistente de WSDL ya estoy haciendo pruebas pero el xml que me genera no es 100% como el de los ejemplos que proporcionan en el VUCEM hay una serie de prefijos en los nombres de los nodos (oxml inclusive lo de header no se genera por si solo hay que hacerlo aparte pero esos nodos estan aun peor por que tienen varios atributos adicionales.

el error 'Error on verifying message against security policy Error Code:1000' estoy seguro que es por eso

Estoy usando fiddler para monitorear el trafico www_fiddler2_com.

Por lo que veo hay quienes crean aparte el xml y se lo envian al webservice pero no no se como le hacen si me pudiarna orientar en ese sentido les agradeceria bastante no creo que lo que se logre con el asistente vaya a poder crear un xml tan adornado comoel que piden.

Y todo esto indemepndientemente de lo de la cadena original y la firma.

David
Responder Con Cita
  #17  
Antiguo 23-12-2011
ruedabeat2003 ruedabeat2003 is offline
Miembro
 
Registrado: mar 2007
Posts: 66
Poder: 18
ruedabeat2003 Va por buen camino
Cove

Creo que deberiamos crear un Hilo con respecto al COVE, no crees. En algun momento del desarrollo me dedique a crear el archivo XML(antes de tener acceso al URL:WSDL) pero despues de importar el WSDL, me dí cuenta que tengo que mis llamadas al WebService me piden un objeto. Objeto que estoy a punto de terminar, solo me falta solventar un problema de asignacion a variables de tipo TXSDecimal. Estamos en contacto.
Responder Con Cita
  #18  
Antiguo 23-12-2011
David Gonzalez David Gonzalez is offline
Registrado
 
Registrado: mar 2008
Posts: 4
Poder: 0
David Gonzalez Va por buen camino
Cita:
Empezado por ruedabeat2003 Ver Mensaje
Creo que deberiamos crear un Hilo con respecto al COVE, no crees. En algun momento del desarrollo me dedique a crear el archivo XML(antes de tener acceso al URL:WSDL) pero despues de importar el WSDL, me dí cuenta que tengo que mis llamadas al WebService me piden un objeto. Objeto que estoy a punto de terminar, solo me falta solventar un problema de asignacion a variables de tipo TXSDecimal. Estamos en contacto.
Completamente de acuerdo si bien es como el cfd no es tan extenso ni parecido pues en el caso del cfd los webservices de los pac si se "adjunta" el xml. vaya el tema si amerita un hilo.

con respecto a lo del uso de los txs yo le hice asi:

Código Delphi [-]
function EnviarCoveTest(Rio : THTTPRIO):string;
var
  peticion: solicitarRecibirCoveServicio2; // esto es un array of
  mcias : Array_Of_Mercancia;
  descs_mcias : Array_Of_DescripcionMercancia;
  Respuesta: solicitarRecibirCoveServicioResponse;
  MySecHdr : Security;
//  UserNameTkn : UserNameToken;
//  RIO: THTTPRIO;
begin
  // crear un cove de prueba y mandarlo
  SetLength(peticion,1);
//  peticion := solicitarRecibirCoveServicio2.Create(nil);
  peticion[0]:= comprobantes.Create;
  with peticion[0] do
  begin
    peticion[0].tipoIdentificador := RecibirCoveService.TipoIdentificador._1; // tipo enumerado
    identificacion := 'GWT921026L97';
//    fechaExpedicion.AsDate :=  StrToDate('2011-11-15');
    fechaExpedicion := TXSDate.Create;
    fechaExpedicion.Year := 2011;
    fechaExpedicion.Month := 11;
    fechaExpedicion.Day :=  15;
    certificadoOrigen := RecibirCoveService.CertificadoOrigen._1;
    numeroExportadorConfiable := '9876';
    observaciones := 'Prueba Registro COVE';
    rfcConsulta := 'GWT921026L97';
    subdivision := RecibirCoveService.subdivision._0;
    tipoFiguraAduanal := RecibirCoveService.tipoFiguraAduanal._2;
    curp := 'RIEF700309MTLVSR07';
    correoElectronico := 'juan.garces@softtek.com';
      firmaElectronica:= RecibirCoveService.FirmaElectronica.Create;
      firmaElectronica.certificado := '3082053130820419a00302010202143230303031303030303030313030303033383932300d06092a864886f70d010105050  03082016f3118301606035504030c0f412e432e2064652070727565626173312f302d060355040a0c26536572766963696f2  064652041646d'+
        '696e69737472616369c3b36e205472696275746172696131383036060355040b0c2f41646d696e69737472616369c3b36e2  0646520536567757269646164206465206c6120496e666f726d616369c3b36e3129302706092a864886f70d01090116'+
        '1a617369736e657440707275656261732e7361742e676f622e6d783126302406035504090c1d41762e20486964616c676f2  037372c20436f6c2e20477565727265726f310e300c06035504110c053036333030310b3009060355040613024d583119301  706035504080c10446973747269746f2046656465726'+
        '16c3112301006035504070c09436f796f6163c3a16e31153013060355042d130c5341543937303730314e4e333132303006  092a864886f70d0109020c23526573706f6e7361626c653a2048c3a963746f72204f726e656c6173204172636967613'+
        '01e170d3131313131313231343030385a170d3134303230383231343030385a3081ab311b30190603550403131247525550  4f20575443205341204445204356311b301906035504291312475255504f20575443205341204445204356311b3019060355  040a1312475255504f205'+
        '75443205341204445204356310b3009060355040613024d5831253023060355042d131c4757543932313032364c3937202f  2048454754373631303033345332311e301c06035504051315202f20484547543736313030334d4446524e4e303930819f30  0d06092a864886f70d01'+
        '0101050003818d0030818902818100bfef4412e9ade576384f855f57499279ce80e0089ae58bd11d4fe3335664f0132a57e  6b62482596cf9c485f6ddb233c5d0623e31e7eb9117bf67a8ab7e9b6cc7fea6494fcaed27d1fb8fd79de07e25c57017b5867  5f03472665432f88830199'+
        '877fc2d49e5ab052ab4e28de16f88d04888ba1c12a7c90cb83a35620029049b630203010001a382010830820104300c0603  551d130101ff04023000300b0603551d0f0404030203d8301106096086480186f84201010404030205a0301d0603551d0e04  160414df932f757aa03f2'+
        '16d90a4105a26488fc0ac94f1302e0603551d1f042730253023a021a01f861d687474703a2f2f706b692e7361742e676f62  2e6d782f7361742e63726c303306082b0601050507010104273025302306082b060105050730018617687474703a2f2f6f63  73702e7361742e676f622e6'+
        'd782f301f0603551d23041830168014eb597d04229a538d9e711aa0589629f539e0a0c530100603551d2004093007300506  032a0304301d0603551d250416301406082b0601050507030406082b06010505070302300d06092a864886f70d0101050500  03820101007caad3f33fef'+
        '9cc6eaf4a4d74921513c8ac4b1a408bdbf08774833926d48c3236f7f433016410e54a97a9d5242a38435cca272f647f15d0  85ac9c1421630ec2a1ee1c229bdf225b52867dd07491e3282e314793acf83f8ee90bd95a7c8dec2dc311f7223f4a136f4dbe  d93f0c8424776557d7a53bc8'+
        '9be2ec491a4f207002f1f065636e32497b8ea5bfa10ab2ee134838fec84cf5671cc6130718479a6597284be710e8b46a384  a1d548867900de4e98bb59568a8119461d3e013507b97ee89ed3736c1d7bbccfb72f530d7cd339b0e0c6ecbd71a5fa0ff3a6  a0199cc31467506be9f25d774'+
        '00e892b14724e754b39d5e86343b006c90b51b05e3e42ba8afdec';   // se obtiene del certificado
      firmaElectronica.cadenaOriginal := '|1|GWT921026L97|345|0|0|2011-11-15|1|9876|1|RIEF700309MTLVSR07|GWT921026L97|Prueba Registro COVE|1|GWT921026L97|VERA|RAMIREZ|ALEJANDRO|CAPRICORNIO|78|78|UNIDAD MORELOS 3A SECCION|MEXICO|543|TULTITLAN|MEXICO|MEX|54935|1|GWT921026L97|MUNOZ|GODINEZ|'+
        'RUBEN|ZSENZONTLE|23|24|PRADOS DE ECATEPEC|TICOMAN|123|COACALCO|MEXICO|MEX|55546|COMPUTADORAS|5|100|5000|500000|50000000|HP|2345|A-12|CADE-657835-MDF67546|';  // se obtiene de los datos
      firmaElectronica.firma := '7185aebe52ca51d9d60a97ac88da9a6a6de1222bdc7b26524a191702bcbe34f9dababbf3ea08f14638c73d340b3db9ac727  a5084abf84cd6d9dbbb102be5b6b998c906c82f43a4df6a9ee2138629c4505bd553aa7be9656b8b8ac618dc8b35b5bf56a9f  1f'+
        '774f7b42379ca16c02b2f17804fe32809f4451379692d97957a56c0';  // se obtiene de la cadena original

    // datos de encabezado del comprobante
    numeroFacturaOriginal := '345';
    emisor := RecibirCoveService.emisor.Create;
    emisor.tipoIdentificador := RecibirCoveService.TipoIdentificador._1;
    emisor.identificacion := 'GWT921026L97';
    emisor.apellidoPaterno := 'VERA';
    emisor.apellidoMaterno := 'RAMIREZ';
    emisor.nombre := 'ALEJANDRO';
      emisor.Domicilio := RecibirCoveService.Domicilio.Create;
      emisor.Domicilio.calle := 'CAPRICORNIO';
      emisor.Domicilio.numeroExterior := '78';
      emisor.Domicilio.numeroInterior := '78';
      emisor.Domicilio.colonia := 'UNIDAD MORELOS 3A SECCION';
      emisor.domicilio.localidad := 'MEXICO';
      emisor.domicilio.referencia := '543';
      emisor.domicilio.municipio := 'TULTITLAN';
      emisor.domicilio.entidadFederativa := 'MEXICO';
      emisor.domicilio.pais := 'MEX';
      emisor.domicilio.codigPostal := '54935';

    destinatario := RecibirCoveService.destinatario.Create;
    destinatario.tipoIdentificador := RecibirCoveService.TipoIdentificador._1;
    destinatario.identificacion := 'GWT921026L97';
    destinatario.apellidoPaterno := 'MUNOZ';
    destinatario.apellidoMaterno := 'GODINEZ';
    destinatario.nombre := 'RUBEN';

      destinatario.Domicilio := RecibirCoveService.Domicilio.Create;
      destinatario.Domicilio.calle := 'ZSENZONTLE';
      destinatario.Domicilio.numeroExterior := '23';
      destinatario.Domicilio.numeroInterior := '23';
      destinatario.Domicilio.colonia := 'PRADOS DE ECATEPEC';
      destinatario.domicilio.localidad := 'TICOMAN';
      destinatario.domicilio.referencia := '123';
      destinatario.domicilio.municipio := 'COACALCO';
      destinatario.domicilio.entidadFederativa := 'MEXICO';
      destinatario.domicilio.pais := 'MEX';
      destinatario.domicilio.codigPostal := '55546';

    // iterar por las partidas de la factura
       SetLength(mcias,1);
       mcias[0] := RecibirCoveService.Mercancia.Create;
       mcias[0].descripcionGenerica := 'COMPUTADORAS';
       mcias[0].claveUnidad := RecibirCoveService.UnidadMedida._5;
       mcias[0].cantidad := RecibirCoveService.cantidad.Create;
       mcias[0].cantidad.DecimalString := '100';
       mcias[0].valorUnitario := RecibirCoveService.valorUnitario.Create;
       mcias[0].valorUnitario.DecimalString := '5000';
       mcias[0].valorTotal := RecibirCoveService.valorTotal.Create;
       mcias[0].valorTotal.DecimalString := '500000';
       mcias[0].valorDolares := RecibirCoveService.valorDolares.Create;
       mcias[0].valorDolares.DecimalString := '50000000';

       SetLength(descs_mcias,1);
       descs_mcias[0] := RecibirCoveService.DescripcionMercancia.Create;

       // iterar por las descripciones especificas
         descs_mcias[0].marca := 'HP';
         descs_mcias[0].modelo := '2345';
         descs_mcias[0].subModelo := 'A-12';
         descs_mcias[0].numeroSerie := 'CADE-657835-MDF67546';
         mcias[0].descripionesEspecificas := descs_mcias;
       mercancias := mcias;
  end;
  // una vez llenado hay que enviarlo
//  RIO := THTTPRIO.Create(nil);

//  RIO.HTTPWebNode.UserName := 'GWT921026L97';
//  RIO.HTTPWebNode.Password := '2eSBtD+Go01Kaka4YoLqrsvDWrP1AZn1nFZTQmT/3S7EFZVD5Pvju09ybA5nwMCK';

  MySecHdr := Security.Create;
  MySecHdr.UsernameToken := UsernameToken.Create;
  MySecHdr.UsernameToken.UserName := 'GWT921026L97';
  MySecHdr.UsernameToken.Password := '2eSBtD+Go01Kaka4YoLqrsvDWrP1AZn1nFZTQmT/3S7EFZVD5Pvju09ybA5nwMCK';

//  UserNameTkn := UserNameToken.Create;
//  UserNameTkn.UserName := 'GWT921026L97';
//  UserNameTkn.Password := '2eSBtD+Go01Kaka4YoLqrsvDWrP1AZn1nFZTQmT/3S7EFZVD5Pvju09ybA5nwMCK';

  Rio.SOAPHeaders.Send(MySecHdr);

  Respuesta := GetIReceptor(False,'',RIO).RecibirCove(peticion);

  Result := 'NumeroOp  : ' + Respuesta.numeroDeOperacion + #10#13;
  Result := 'HoraRecep : ' + DateTimeToStr(Respuesta.horaRecepcion.AsDateTime) + #10#13;
  Result := 'Mensaje   : ' + Respuesta.mensajeInformativo;

end;

La cosa "rara" es la del header que se tiene que agregar aparte MySecHdr : Security; eso lo defini en la unidad que genera el webservice del sig modo:

Código Delphi [-]
  UserNameToken = class //(TSOAPHeader)
  private
    FUserName: String;
    FPassword: String;
  published
    property UserName : string read FUserName write FUserName;
    property Password : string read FPassword write FPassword;
  end;

  Security = class(TSOAPHeader)
  private
    FUserNameToken: UserNameToken;
  published
    function ObjectToSOAP(RootNode, ParentNode: IXMLNode;
      const ObjConverter: IObjConverter; const Name, URI: InvString;
      ObjConvOpts: TObjectConvertOptions; out RefID: InvString): IXMLNode; override;
    property UserNameToken: UserNameToken read FUserNameToken write FUserNameToken;
  end;


Si me genera un xml "normalito" y lo transmite pero vucem me lo rechaza por que le faltan un monton de "adornos" attributos adicionales y prefijos de namespaces, de hecho la funcion esa que ves en la clase security a la que el hago override es donde estoy intentando que me genere al menos en ese nodo el rollo tal y como lo pide el vucem.

Los datos que vez son los de uno de los ejemplos (primero quiero resolver esta parte antes de aventarme a lo demas)

Saludos

David
Responder Con Cita
  #19  
Antiguo 28-12-2011
ruedabeat2003 ruedabeat2003 is offline
Miembro
 
Registrado: mar 2007
Posts: 66
Poder: 18
ruedabeat2003 Va por buen camino
Errores en la creación de Cliente WebService

Y como definiste tu function ObjectToSOAP ???
Responder Con Cita
  #20  
Antiguo 28-12-2011
sergioed16 sergioed16 is offline
Registrado
NULL
 
Registrado: dic 2011
Posts: 3
Poder: 0
sergioed16 Va por buen camino
como obtienen el firmaElectronica.certificado ?
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
webservice con Sesion comba Internet 6 11-12-2020 13:04:18
WebService y parametros AdrianD JAVA 4 05-09-2010 15:41:41
Problema con un cliente de un webservice vejerf Internet 2 09-03-2009 11:27:30
WebService y D4 Nose Internet 1 02-08-2005 23:18:23


La franja horaria es GMT +2. Ahora son las 01:08:53.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi