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 al enviar en POST con Google Data API Delphi (https://www.clubdelphi.com/foros/showthread.php?t=83195)

elcharlie 21-05-2013 12:33:10

Problema al enviar en POST con Google Data API Delphi
 
Buenas gente:
Estoy haciendo una mini aplicacion que sincronice con gdata desde Delphi, y de momento me loqueo, y retorno información con get, pero a la hora de usar el comando POST, y enviarle una estructura para que cree un registro, siempre me da error, y no encuentro solución, he probado de todo, y por ultimo, lo que he hecho ha sido intentar dar de alta un grupo de contactos con el ejemplo de google pero nada, os pongo el ejemplo por si alguien me puede echar una mano.
Gracia de antemano:

elcharlie 21-05-2013 12:40:55

No se que ha Pasado os Pongo el post Original:
Buenas gente:
Estoy haciendo una mini aplicacion que sincronice con gdata desde Delphi, y de momento me loqueo, y retorno informacion con get, pero a la hora de usar el comando POST, y enviarle una estructura para que cree un registro, siempre me da error, y no encuentro solucion, he probado de todo, y por ultimo, lo que he hecho ha sido intentar dar de alta un grupo de contactos con el ejemplo de google pero nada, os pongo el ejemplo por si alguien me puede echar una mano.
Gracia de antemano:

Código Delphi [-]
function CreateGroup(Titulo: PAnsiChar): PChar; stdcall;
var
  XMLDoc: TNativeXml;
  ListaNodos: TXmlNodeList;
  Node: TXmlNode;
  NodeExt: TXmlNode;
  createRequest: string;

  Send: Thttpsend;
  RetornoString: AnsiString;
  I: Integer;
  lPostData: TStringList;
begin
  Result := PChar('-1');
  if ((AuthID <> '') and (Titulo <> '')) then
  begin
  // estructura en https://developers.google.com/google...contact_groups
  // Tambien lo he probado en String en vez de un XML sin exito
    XMLDoc := TNativeXml.Create;
    XMLDoc.CreateName('atom:entry');
    XMLDoc.Root.WriteAttributeString('xmlns:gd',
      'http://schemas.google.com/g/2005');
    XMLDoc.Root.WriteAttributeString('xmlns:atom',
      'http://www.w3.org/2005/Atom');
    Node := XMLDoc.Root.NodeNew('atom:category');
    Node.WriteAttributeString('scheme',
      'http://schemas.google.com/g/2005#kind');
    Node.WriteAttributeString('term',
      'http://schemas.google.com/contact/2008#group');
    Node := XMLDoc.Root.NodeNew('atom:title');
    Node.WriteAttributeString('type', 'text');
    Node.ValueAsUnicodeString := String(Titulo);
    NodeExt := XMLDoc.Root.NodeNew('gd:extendedProperty');
    NodeExt.WriteAttributeString('name', 'more info about the group');
    Node := NodeExt.NodeNew('info');
    Node.ValueAsUnicodeString := 'Nice people.';
    XMLDoc.SaveToFile('C:\CarlosP.xml');

    Send := Thttpsend.Create;
    Send.MimeType := 'application/atom+xml';
    Send.Headers.Clear;
    Send.Headers.Add('GData-Version: 3.0');
    Send.Headers.Add('Authorization: GoogleLogin auth=' + AuthID); //Es la Autentificacion dada al loguearme por google

    XMLDoc.SaveToStream(Send.Document);


    try
      if (Send.HTTPMethod('POST','https://www.google.com/m8/feeds/groups/default/full')) then
      begin
        Application.MessageBox(PChar(inttostr(Send.ResultCode)), '', 0);
      end;
      Application.MessageBox(PChar(inttostr(Send.ResultCode)), '', 0);
    except
      on e: Exception do
        Application.MessageBox(PChar(e.ToString), '', 0);  // Siempre Entra Aqui codigo 500
    end;
  end;


end;

Chris 21-05-2013 17:15:52

¿Cuál es el error que te está dando el código anterior?

elcharlie 21-05-2013 18:45:11

Ejecutar, ejecuta bien, pero siempre que intento enviar algo me devuelve Bad request 401, o desde la excepcion me retorna 500.
es al hacer esto:
Código Delphi [-]
try
      if (Send.HTTPMethod('POST','https://www.google.com/m8/feeds/groups/default/full')) then
      begin
        Application.MessageBox(PChar(inttostr(Send.ResultCode)), '', 0);
      end;
      Application.MessageBox(PChar(inttostr(Send.ResultCode)), '', 0);
    except
      on e: Exception do
        Application.MessageBox(PChar(e.ToString), '', 0);  // Siempre Entra Aqui codigo 500
    end;
Es como si la sintaxis del fichero que intento enviar estuviera mal, pero he probado de diferentes maneras y siempre me devuelve lo mismo, vamos que no puedo enviarle información, y la verdad me tiene un poco desesperado, yo que había empezado con los contactos porque a priori era mas sencillo, y ya ves tu.

Chris 21-05-2013 20:54:17

Cómo estás haciendo la autenticación con Google? Estás usando OAuth2?

elcharlie 22-05-2013 13:50:12

Pues no te se decir, le envio el accounType, el EMail del usuario, el Password, el service y me devuelve la Autentificacion. Para loguearme uso las InetSuite, y estaba probando para enviar el XMl con ellas y no he podido, por eso el proceso de arriba uso Synapse.

elcharlie 23-05-2013 12:44:02

A Nadie se lo ocurre algo? Me podeis echar una mano? estoy super atascado

Chris 24-05-2013 04:23:59

Cita:

Empezado por elcharlie (Mensaje 461066)
A Nadie se lo ocurre algo? Me podeis echar una mano? estoy super atascado

Hola Charlie!

Tengo mucha ganas de ayudarte a resolver tu problema. Pero por cuestiones de tiempo en mi trabajo no he podido ni abrir Delphi.

Saludos!

elcharlie 24-05-2013 12:32:14

Cita:

Empezado por Chris (Mensaje 461154)
Hola Charlie!

Tengo mucha ganas de ayudarte a resolver tu problema. Pero por cuestiones de tiempo en mi trabajo no he podido ni abrir Delphi.

Saludos!


Muchas gracias Chris!!, Pero creo que ya lo he conseguido, ya te contare! Gracias de todas formas, un saludo.


La franja horaria es GMT +2. Ahora son las 20:09:12.

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