
[RESUELTO] Delphi 7 Consumiento servicios web en java. Todo un show :S
#21
Posted 05 May 2011 - 03:19 PM
#22
Posted 05 May 2011 - 03:40 PM
de eso me di cuenta porque estaba probando el metodo autenticar y me dio problemas y cuando fui al sitio a verlo no estaba activo.
de hecho ya defini todas las variables de las funciones como clases, mi temor siempre fue que yo hicieras las definiciones y despues no se entendieran mi aplicacion y el web services.
#23
Posted 09 May 2011 - 10:39 PM
me da parametros incorrectos cuando no defino RegisterInvokeOptions ioliteral o no me retorna valores cuando autentifico. es decir esta hablando con el web services, alguien sabe de alguna herramienta para ver como es el XML que se envia y el que se responde, tengo win 7 y depolphi 7.
gracias
#24
Posted 10 May 2011 - 07:41 AM
saludos
me da parametros incorrectos cuando no defino RegisterInvokeOptions ioliteral o no me retorna valores cuando autentifico. es decir esta hablando con el web services, alguien sabe de alguna herramienta para ver como es el XML que se envia y el que se responde, tengo win 7 y depolphi 7.
gracias
Yo utilizo soapUI para probar los webservice, lo puedes bajar desde aquí, intenté consumir el webservice de que utilizas pero sin conocer el usuario y contraseña, pues no me deja avanzar, ya te darás cuenta el formato del XML que requieres.
Salud OS
#25
Posted 10 May 2011 - 09:07 AM
pass pruebasWS
realmente lo que no me esta retortando nada, al parecer valores en bkanco o null. porque en realidad se esta conectando al web service, no sera que debo actualziar algo del delphi 7? y he hecho todo lo que he encontrado en las doc que ustedes toienen en susu sitios pero nada.
creo que publique las .pas. pero te la puedio enviar a lo mejor te das cuenta de algo que no tengo o esta de mas.
si necesitan algo que se comente sobre triggers, store procedure para SQL seevre 2000 o firebird 1.5 tengo algo de experiencia. al igual que sistemas de RRHH y Nominas.
Gracias
#26
Posted 10 May 2011 - 09:16 AM
Token = 'iiw2BkqTP6bwQhlRTPqUKhKKPIaD59T6ybcp40eexStu......'
Voy a hacer unas pruebas con mi delphi y te comento que hay que hacer.
Salud OS
Edito: ....... en la tarde/noche de hoy (GMT-6)
#27
Posted 10 May 2011 - 09:26 AM
aqui te envio lo que me genero delphi. cuando consumi el web services, las clases las tuve que generar yo, al igual que los registros de las clases en la implementación.
Gracias.
// ************************************************************************ // // The types declared in this file were generated from data read from the // WSDL File described below: // WSDL : [url=https://forcogsa.dyndns.org:8081/WSTimbrado/WSForcogsaService?wsdl]https://forcogsa.dyndns.org:8081/WSTimbrado/WSForcogsaService?wsdl[/url] // Encoding : UTF-8 // Codegen : [wfDebug,wfUnwindLiteralParameters,wfUseSerializerClassForAttrs] // Version : 1.0 // (09/05/2011 23:16:17 - 1.33.2.5) // ************************************************************************ // unit WSForcogsaService; 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[list] [*] of other types represented or were referred [/list] // 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. // ************************************************************************ // // !:Timbrar - "[url=http://wservicios/]http://wservicios/[/url]" // !:TimbrarResponse - "[url=http://wservicios/]http://wservicios/[/url]" // !:Autenticar - "[url=http://wservicios/]http://wservicios/[/url]" // !:AutenticarResponse - "[url=http://wservicios/]http://wservicios/[/url]" // !:Cancelacion - "[url=http://wservicios/]http://wservicios/[/url]" // !:CancelacionResponse - "[url=http://wservicios/]http://wservicios/[/url]" // ************************************************************************ // // Namespace : [url=http://wservicios/]http://wservicios/[/url] // transport : [url=http://schemas.xmlsoap.org/soap/http]http://schemas.xmlsoap.org/soap/http[/url] // style : document // binding : WSForcogsaPortBinding // service : WSForcogsaService // port : WSForcogsaPort // URL : [url=https://forcogsa.dyndns.org:8081/WSTimbrado/WSForcogsaService]https://forcogsa.dyndns.org:8081/WSTimbrado/WSForcogsaService[/url] // ************************************************************************ // // Definicion de las clases TFolios = class; Timbrar = class; TimbrarResponse = class; Autenticar = class; AutenticarResponse = class; Cancelacion = class; CancelacionResponse = class; ArrayFolios = array of WideString; ArrayFoliosCancelados = array of TFolios; TFolios = class private FcodEstatus: WideString; Ffolios: ArrayFoliosCancelados; Fmensaje: WideString; published property codEstatus: WideString read FcodEstatus write FcodEstatus; property folios: ArrayFoliosCancelados read Ffolios write Ffolios; property mensaje: WideString read Fmensaje write Fmensaje; end; Timbrar = class(TRemotable) private Fcfd: WideString; Ftoken: WideString; public published property cfd: WideString read Fcfd write Fcfd; property token: WideString read Ftoken write Ftoken; end; TimbrarResponse = class(TRemotable) private Fcfdi: WideString; Fcodigo: WideString; Fmensaje: WideString; public published property cfdi: WideString read Fcfdi write Fcfdi; property codigo: WideString read Fcodigo write Fcodigo; property mensaje: WideString read Fmensaje write Fmensaje; end; Autenticar = class(TRemotable) private Fusuario: WideString; Fcontrasena: WideString; public published property usuario: WideString read Fusuario write Fusuario; property contrasena: WideString read Fcontrasena write Fcontrasena; end; AutenticarResponse = class(TRemotable) private Fmensaje: WideString; Ftoken: WideString; public published property mensaje: WideString read Fmensaje write Fmensaje; property token: WideString read Ftoken write Ftoken; end; Cancelacion = class(TRemotable) private FrfcEmisor: WideString; Ffecha: WideString; Ffolios: ArrayFolios; Ftoken: WideString; public published property rfcEmisor: WideString read FrfcEmisor write FrfcEmisor; property fecha: WideString read Ffecha write Ffecha; property folios: ArrayFolios read Ffolios write Ffolios; property token: WideString read Ftoken write Ftoken; end; CancelacionResponse = class(TRemotable) private FcodEstatus: WideString; Ffolios: ArrayFoliosCancelados; Fmensaje: WideString; public published property codEstatus: WideString read FcodEstatus write FcodEstatus; property folios: ArrayFoliosCancelados read Ffolios write Ffolios; property mensaje: WideString read Fmensaje write Fmensaje; end; WSForcogsa = interface(IInvokable) ['{70F39910-ABEF-85D4-DD5A-C1134AD30474}'] function Timbrar(const parameters: Timbrar): TimbrarResponse; stdcall; function Autenticar(const parameters: Autenticar): AutenticarResponse; stdcall; function Cancelacion(const parameters: Cancelacion): CancelacionResponse; stdcall; end; function GetWSForcogsa(UseWSDL: Boolean=System.False; Addr: string=''; HTTPRIO: THTTPRIO = nil): WSForcogsa; implementation function GetWSForcogsa(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): WSForcogsa; const defWSDL = '[url=https://forcogsa.dyndns.org:8081/WSTimbrado/WSForcogsaService?wsdl';]https://forcogsa.dyndns.org:8081/WSTimbrado/WSForcogsaService?wsdl';[/url] defURL = '[url=https://forcogsa.dyndns.org:8081/WSTimbrado/WSForcogsaService';]https://forcogsa.dyndns.org:8081/WSTimbrado/WSForcogsaService';[/url] defSvc = 'WSForcogsaService'; defPrt = 'WSForcogsaPort'; 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 WSForcogsa); 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(WSForcogsa), '[url=http://wservicios/',]http://wservicios/',[/url] 'UTF-8'); InvRegistry.RegisterDefaultSOAPAction(TypeInfo(WSForcogsa), ''); InvRegistry.RegisterInvokeOptions(TypeInfo(WSForcogsa), ioLiteral); RemClassRegistry.RegisterXSClass(Autenticar, '[url=http://wservicios/',]http://wservicios/',[/url] 'Autenticar'); RemClassRegistry.RegisterXSClass(AutenticarResponse, '[url=http://wservicios/',]http://wservicios/',[/url] 'AutenticarResponse'); RemClassRegistry.RegisterXSClass(Timbrar, '[url=http://wservicios/',]http://wservicios/',[/url] 'Timbrar'); RemClassRegistry.RegisterXSClass(TimbrarResponse, '[url=http://wservicios/',]http://wservicios/',[/url] 'TimbrarResponse'); RemClassRegistry.RegisterXSClass(Cancelacion, '[url=http://wservicios/',]http://wservicios/',[/url] 'Cancelacion'); RemClassRegistry.RegisterXSClass(CancelacionResponse, '[url=http://wservicios/',]http://wservicios/',[/url] 'CancelacionResponse');
end.
#28
Posted 10 May 2011 - 09:43 AM
esto lo haces con el soft que me enviates?
aqui te envio lo que me genero delphi. cuando consumi el web services, las clases las tuve que generar yo, al igual que los registros de las clases en la implementación.
Gracias.
Si, lo he recuperado con el soft que te comenté, mis primeras pruebas las hice como tú, generando las classes Remotables, pero tengo una idea que pìenso nos puede ayudar y que voy a probar cuando llegue a casa, te dejo saber los resultados.
Salud OS
#29
Posted 10 May 2011 - 09:53 AM
gracias por todo.
#30
Posted 10 May 2011 - 10:06 AM
ok gracias pra ami son temas pero muy nuevos, nunca los habia explotado solo me dedique a la gestion de RRHH, cartografia digital desde builder, en lo que les pueda aportar me dicen y no hay problemas, porque donde estaba nunca habia una internet para estas cosas,
.....vengo de cuba solo llevo aqui en mexico 6 meses,
Pues bienvenido a México y espero que logremos solucionar este asunto que estoy seguro va a servir a muchos, el tema de los webservices para la facturacion electrónica es lo de hoy por estas latitudes

Salud OS
#31
Posted 10 May 2011 - 12:54 PM
ya logro la pregunta
<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlso...soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/20...chema-instance" xmlns:SOAP-ENC="http://schemas.xmlso...><SOAP-ENV:Body xmlns:NS1="http://wservicios/">...<NS1:Autenticar id="1" xsi:type="NS1:Autenticar"><usuario xsi:type="xsd:string">pruebasWS</usuario><contrasena xsi:type="xsd:string">pruebasWS</contrasena></NS1:Autenticar><parameters href="#1"/></SOAP-ENV:Body></SOAP-ENV:Envelope>
y me esta respondiendo bien el token
<?xml version='1.0' encoding='UTF-8'?><S:Envelope xmlns:S="http://schemas.xmlso...enticarResponse xmlns:ns2="http://wservicios/">...y></S:Envelope>
lo que aun el delphi no lo veo. seguire insistiendo.
gracias
#32
Posted 10 May 2011 - 02:16 PM
ya logre retornar bien los valores.
gracias por la ayuda
lo que no he podido es hechar a andar el soft que medio. realmente deno de dedicarle mas tiemño. agarre y el codigo XML lo obtuve con los mismo objetos de la aplicación gracias.
#33
Posted 10 May 2011 - 09:13 PM
ya logre retornar bien los valores.
gracias por la ayuda
[/quote]
Que bien, podemos colocar este hilo como resuelto, ¿ puedes colocar la porción de código que resolvió el problema ?

[quote name="JuanPalmaSoft" post="50613" timestamp="1305058609"]
lo que no he podido es hechar a andar el soft que medio. realmente deno de dedicarle mas tiemño. agarre y el codigo XML lo obtuve con los mismo objetos de la aplicación gracias.
[/quote]
Sólo debes de crear un nuevo proyecto e indicarle que es lo que quieres obtener, te generará varias peticiones dependiendo de las funciones que tenga el webservice, para ejecutar una petición sólo hay que presionar el botón de play y obtendras el resultado de la petición, no debes tener problema, con más tiempo encontrarás muchas cosas de utilidad en ese programit

Salud OS
Attached Files
#34
Posted 10 May 2011 - 09:28 PM
lo que realmente delphi solo te define las estructuras, hay que definir todo lo demas, voy a preparara cuendo termine un articulo completo con todos los detalles, dame unos dias para terminar un soft que estoy haciendo, pero dejo mi correo y mi messengre pòr si alguien desea aclarar cualquier duda. juanpalmasoft@hotmail.com
lo fundamental es esto que describo aqui para ese PAC. Forcogsa pongo el ejemplo de autenticar com o debe ser el anidamiento de clases.
Autenticar = class(TRemotable) private Fusuario: WideString; Fcontrasena: WideString; public constructor Create; override; published property usuario: WideString read Fusuario write Fusuario; property contrasena: WideString read Fcontrasena write Fcontrasena; end; wsAutenticarResponse = class(TRemotable) private Fmensaje: WideString; Ftoken: WideString; published property mensaje: WideString read Fmensaje write Fmensaje; property token: WideString read Ftoken write Ftoken; end; AutenticarResponse = class(TRemotable) private Freturn: wsAutenticarResponse; public constructor Create; override; published property return: wsAutenticarResponse read Freturn write Freturn; end;
#35
Posted 11 May 2011 - 08:20 AM
Como saben que clases deben declarar y que estructura tienen para poder comunicarse con el webservice?
Saludox
#36
Posted 11 May 2011 - 08:33 AM
En este mismo tema al principio pongo la estructura de clases solo tiene que hacer este pequeño ajuste que explico al final del tema. ya que delphi al menos la version 7 con sp 1 solo te define el esquema de las funciones, los datos que se definen en las funciones hay que declararlas como las describo en el tema.
Ha sido un placer.
#37
Posted 11 May 2011 - 10:12 AM
Leyendo todo el tema me ha surgido una enorme duda.
Como saben que clases deben declarar y que estructura tienen para poder comunicarse con el webservice?
Saludox
Hola poli, el mismo wsdl te indica donde puedes consultar las estructuras, si ves el wsdl (https://forcogsa.dyn...gsaService?wsdl) al inicio te muestra
[nobbc]
<types>
<xsd:schema>
<xsd:import namespace="http://wservicios/" schemaLocation="https://forcogsa.dyn...ervice?xsd=1"/>
</xsd:schema>
</types>
[/nobbc]
Podrás observar que el esquema de los tipos de datos está en la url (https://forcogsa.dyn...saService?xsd=1) y no tienes que inventar nada de nada

Salud OS
#38
Posted 11 May 2011 - 10:25 AM
Leyendo todo el tema me ha surgido una enorme duda.
Como saben que clases deben declarar y que estructura tienen para poder comunicarse con el webservice?
Saludox
Hola poli, el mismo wsdl te indica donde puedes consultar las estructuras, si ves el wsdl (https://forcogsa.dyn...gsaService?wsdl) al inicio te muestra
[nobbc]
<types>
<xsd:schema>
<xsd:import namespace="http://wservicios/" schemaLocation="https://forcogsa.dyn...saService?xsd=1"/>
</xsd:schema>
</types>
[/nobbc]
Podrás observar que el esquema de los tipos de datos está en la url (https://forcogsa.dyn...saService?xsd=1) y no tienes que inventar nada de nada
Salud OS
Muy cierto¡¡¡¡¡¡¡¡¡¡¡ no me sabia esa

#39
Posted 12 May 2011 - 12:45 AM
gracias por todo, y estare al tanto del sitio, para cualquier ayuda que pueda dar.
#40
Posted 08 September 2012 - 12:35 AM
Leyendo todo el tema me ha surgido una enorme duda.
Como saben que clases deben declarar y que estructura tienen para poder comunicarse con el webservice?
Saludox
Hola poli, el mismo wsdl te indica donde puedes consultar las estructuras, si ves el wsdl (https://forcogsa.dyn...gsaService?wsdl) al inicio te muestra
[nobbc]
<types>
<xsd:schema>
<xsd:import namespace="http://wservicios/" schemaLocation="https://forcogsa.dyn...saService?xsd=1"/>
</xsd:schema>
</types>
[/nobbc]
Podrás observar que el esquema de los tipos de datos está en la url (https://forcogsa.dyn...saService?xsd=1) y no tienes que inventar nada de nada
Salud OS
Muy cierto¡¡¡¡¡¡¡¡¡¡¡ no me sabia esa
hola
soy nuevo en el foro y tambien estoy tratando de consumir el webservice de forcogsa desde delphi7 pero no logro autenticar, ya copie el codigo de arriba y no se como enviar las instrucciones en delphi para autenticar, le estoy poniendo asi pero me manda error, ojala puedan ayudarme
WSForcogsaService.Autenticar('pruebasWS','pruebasWS');
[Error] AFactur.pas(1967): ')' expected but ',' found
me podran echar la mano, gracias