Ver Mensaje Individual
  #1  
Antiguo 06-04-2014
giulichajari giulichajari is offline
Miembro
 
Registrado: nov 2012
Posts: 306
Reputación: 12
giulichajari Va por buen camino
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
Responder Con Cita