PDA

Ver la Versión Completa : Consumir WSDL desde Delphi


darkamerico
17-10-2020, 05:37:28
Saludos compańeros y amigos, requiero consumir el Web Service SOAP: http://181.176.170.150:555/ConsultaRUCDNI.svc?wsdl
El dato de entrada es <tem:ruc>10181594212</tem:ruc>
Requiero consumirlo desde Delphi y traer esas etiquetas en componentes TEdit
Agradezco la ayuda.

oscarac
19-10-2020, 05:15:10
genera tu archivo .pas usando wdsl importer
luego puedes agregar ese achivo a tu aplicacion para usar sus funciones

aqui hay un ejemplo https://www.clubdelphi.com/foros/showthread.php?t=81399&highlight=wsdl+importer

darkamerico
19-10-2020, 07:13:51
genera tu archivo .pas usando wdsl importer
luego puedes agregar ese achivo a tu aplicacion para usar sus funciones

aqui hay un ejemplo https://www.clubdelphi.com/foros/showthread.php?t=81399&highlight=wsdl+importer


Gracias por responder amigo, precisamente en el archivo .pas generado por el WSDL importer me sale un error: Project Code (http://www.mediafire.com/file/xfnzfckwm1v0byi/ConsumeSOAP.zip/file)


Imagen: https://ibb.co/YRB1j5y


Muchas Gracias

Neftali [Germán.Estévez]
19-10-2020, 08:25:21
Parece que se produce un error al generar el .PAS en la importación, con algo relacionado con el array (parámetro).
Basta con cambiar esto:
procedure Set_foto(Index: Integer; const ATArray<System.Byte>: TArray<System.Byte>);
Por esto:
procedure Set_foto(Index: Integer; const ATArray: TArray<System.Byte>);
Lo mismpo en la implementación (tanto en la cabecera como en el interior de la función.
El fichero queda tal como te adjunto.

Neftali [Germán.Estévez]
19-10-2020, 08:26:19
Parece que se produce un error al generar el .PAS en la importación, con algo relacionado con el array (parámetro).
Basta con cambiar esto:


procedure Set_foto(Index: Integer; const ATArray<System.Byte>: TArray<System.Byte>);


Por esto:


procedure Set_foto(Index: Integer; const ATArray: TArray<System.Byte>);


Lo mismpo en la implementación (tanto en la cabecera como en el interior de la función.

El fichero queda tal como te adjunto.

darkamerico
19-10-2020, 14:44:02
;538761']Parece que se produce un error al generar el .PAS en la importación, con algo relacionado con el array (parámetro).
Basta con cambiar esto:


procedure Set_foto(Index: Integer; const ATArray<System.Byte>: TArray<System.Byte>);
Por esto:


procedure Set_foto(Index: Integer; const ATArray: TArray<System.Byte>);
Lo mismpo en la implementación (tanto en la cabecera como en el interior de la función.

El fichero queda tal como te adjunto.


Gracias Germán, usted como siempre demostrando calidad de caballero, un abrazo


Americo

oscarac
21-10-2020, 06:36:22
te funcionó?
pudiste hacer las consultas?
al parecer a traves de la sunat ya no se puede, la rutina que yo tenia para "capturar" los datos segun el ruc ya no me funciona

oscarac
29-10-2020, 01:42:07
hola
estuve revisando este post

el tema que aun no logro deducir, es como parsear el JSON


arr: ResponseSunat2;
JSo: TJSONObject;
JSOarray: TJSONArray;
JSOValue: TJSONValue;
_Codigo, _Periodo, _Fecha, _Opcion: string;
begin
arr := GetIConsultaRUCDNI.GetBuscaRUC(Edit1.Text);

// se recibe la informacion en formato JSON
JSOarray := TJSONObject.ParseJSONValue(arr) as TJSONArray;

en la ultima linea me aparece el error

[dcc32 Error] Unit1.pas(46): E2250 There is no overloaded version of 'ParseJSONValue' that can be called with these arguments

como puedo "capturar" la informacion que esta en la variable arr ???

oscarac
29-10-2020, 03:03:59
investigando, y dandole muchas vueltas al asunto, descubri que puedo aceder a las propiedades de la clase ResposeSunat2 asi

arr := GetIConsultaRUCDNI.GetBuscaRUC(Edit1.Text);
Label1.Caption := Format('%s', [arr._razonSocial]);


Espero que le sirva a alguien mas

pero tengo una consulta...
en lo que es busqueda de DNI, como puedo mostrar la foto?

movorack
29-10-2020, 15:58:36
Hola, [oscarac]

El manejo de la foto, se revisó en este post (https://www.clubdelphi.com/foros/showthread.php?t=94915)

oscarac
30-10-2020, 04:08:58
Interesante, pero lo que aun lo logro invocar o deducir es como invocar a la funcion verFoto ??

verfoto ([_res._foto]) ?????

procedure TForm1.Button1Click(Sender: TObject);
var _res : ResponseReniec2;
_razon, _dir :string;
begin
_res := GetIConsultaRUCDNI.GetBuscaDNI(Edit1.Text);
_RAZON := Format('%s', [_res._primerApellido + ' ' + _res._segundoApellido + ' ' + _res._nombres]);
_DIR := Format('%s', [_res._direccion]);
StaticText1.Caption := _razon;
// VerFoto ([_res._foto]);
end;

procedure TForm1.VerFoto(Foto: TArray< System.Byte >; Image: TImage);
var
AStringStream: TStringStream;
begin
AStringStream := TStringStream.Create(StringOf(Foto));
try
AStringStream.Position := 0;
Image1.Picture.Graphic.LoadFromStream(AStringStream);
finally
AStringStream.Free;
end;
end;



la unidad JPEG esta incluida, estoy usando xe7


me aparecen este error
[dcc32 Error] Unit1.pas(42): E2010 Incompatible types: 'Byte' and 'System.TArray<System.Byte>'