Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Delphi para la web (https://www.clubdelphi.com/foros/forumdisplay.php?f=51)
-   -   Problema con xml en webservice (https://www.clubdelphi.com/foros/showthread.php?t=85603)

giulichajari 06-04-2014 23:23:12

Problema con xml en webservice
 
Bueno amigos soy nuevo en el tema de los webservices, encontre un tutorial para crearlo usando php en vez del servidor de windows, lo que me parecio conveniente porque se algo de php, y para no tener que instalar y configurar windows server en todas las maquinas de la empresa, pero bue ya fue.

El caso es que el xml me da el error:

Solo se admite un elemento de nivel superior en el xml

Aqui una cap:


No se bien donde esta el error.

Tengo un form con lo siguiente:

Código Delphi [-]
unit Unit2;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Soap.InvokeRegistry, Vcl.StdCtrls,
  Soap.Rio, Soap.SOAPHTTPClient;

type
  TForm2 = class(TForm)
    HTTPRIO1: THTTPRIO;
    Button1: TButton;
    EditId: TEdit;
    EditNombre: TEdit;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

uses listado;

procedure TForm2.Button1Click(Sender: TObject);
var
  arr:ArregloDeEstructuras;
  info:Estructura;
  l, i:Integer;
begin

  // Segun el rellenado llamamos a uno u otro
  if (editId.Text <> '') then begin
    arr := (HTTPRIO1 as Consulta_de_usuariosPortType).ConsultaUsuario(StrToInt(editId.text));
  end
  else begin
    arr := (HTTPRIO1 as Consulta_de_usuariosPortType).ConsultaUsuarios(editNombre.text);
  end;

  l := Length(arr);
  Memo1.Lines.Clear;

  for i := 0 to (l - 1) do begin
    info := arr[i];

    Memo1.Lines.Add('Id: ' + IntToStr(info.Id));
    Memo1.Lines.Add('Nombre: ' + info.Nombre);
    Memo1.Lines.Add('Apellidos: ' + info.Apellidos);
    Memo1.Lines.Add('Teléfono(ext): ' + info.Telefono + '-' + IntToStr(info.Extension));
    Memo1.Lines.Add('Departamento: ' + info.Departamento);
    Memo1.Lines.Add('Email: ' + info.EMail);
    Memo1.Lines.Add('----------------------------------');

  end;


end;

end.
En este archivo incluyo una unidad creada con wsdl importer la de listado.pas. La idea fue extraida de este tuto pero decidi hacer un tema:

http://neftali.clubdelphi.com/?p=3335

Saludos

Neftali [Germán.Estévez] 07-04-2014 09:58:20

Hola.
Hay que decir que en los ejemplos que utilicé no todas las versiones de delphi me generaban correctamente los ficheros con el WSDL.
Podrías subir los ficheros que estás utilizando (en un ZIP) de esa forma si quieres podemos probarlos.

El PHP y el WSDL generado (además de PAS que ya has subido).

¿Con qué versión los estás generando?

Un saludo.

giulichajari 07-04-2014 15:27:23

Archivos subidos
 
1 Archivos Adjunto(s)
Hay te mando los 2 archivos, el de php y el generado a partir del wsdl.
Trabajo en Delphi XE2, sino me podrias decir cual de las opciones del tutorial podria utilizar?
Gracias por tu ayuda

giulichajari 08-04-2014 13:57:01

De vuelta
 
Bueno ahora cambio la leyenda que aparece en el error:



Y el archivo php lo descargue de tu web, lo unico que cambie son nlos parametros del servidor y la bd. No quiero descargar delphi xe5 porque es muy pesado. Muchas gracias

giulichajari 12-04-2014 14:54:17

Solucionado
 
Hola de vuelta sobre todo a NEftali, la solucion la encontre en esta pagina:

http://stackoverflow.com/questions/1...type-in-nusoap

Comentando una linea ya logre que me devuelva los datos insertando el id

Neftali [Germán.Estévez] 14-04-2014 09:10:49

^\||/ GRracias por el feedback.
Siento no haber podido echarle un vistazo antes.

Un saludo.

giulichajari 14-04-2014 17:07:12

Cita:

Empezado por Neftali (Mensaje 475136)
^\||/ GRracias por el feedback.
Siento no haber podido echarle un vistazo antes.

Un saludo.

No hay problema Neftali, muy bueno el tuto. Ahora no sabes de algun tutorial o de que forma consumirlo a traves de la web, porque probe en otra maquina y no puedo, obviamente hay que tener una ip fija, abrir los puertos del servidor, pero ademas modificar la ruta del webservice en vez de localhost, poner la ip. en fin como se hace eso, porque en el tutorial tuyo no esta esa parte, gracias igual.


La franja horaria es GMT +2. Ahora son las 06:32:52.

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