Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-04-2011
URBANO URBANO is offline
Miembro
 
Registrado: jul 2003
Ubicación: Huelva
Posts: 126
Poder: 21
URBANO Va por buen camino
Question TIdHTTP - Como me autentifico

Hola, necesito utilizar desde mi programa realiazo en delphi5 unos web services. Esto es algo nuevo para mi. He estado leyendo algunos hilos, recopilando información y he realizado el siguiente codigo de prueba utilizando un componente Indy.

Código:
procedure TForm1.Button1Click(Sender: TObject);
var
  http: TIdHttp;
  respuesta: string;
  datosPost: TIdMultiPartFormDataStream;
begin
  http:= TIdHTTP.Create(Self);
  http.Request.Username:= 'usuario';
  http.Request.Password:= 'clave';
  datosPost := TIdMultiPartFormDataStream.Create;
  try
   datosPost.AddFormField('description', 'ejemplo1');
   datosPost.AddFormField('comments', 'firmar documento de prueba');
   datosPost.AddFormField('reference', '1');
   datosPost.AddFormField('file', 'C:\firmar1.pdf');

   respuesta := http.Post('www.direcionwebservice', datospost);
  finally
    http.Free;
    datospost.free;
  end;

  showmessage(respuesta);

end;
Según me comenta el proveedor del web services (me ha facilitado la estructura de los datos que debo incluir en el post) antes de realizar el post hay que autentificarse según la autenticación HTTP básica estándar. Por lo que he leido he entendido que esto lo realiza directamente el componente indy y únicamente tengo que pasarle el usuario y la clave, como pongo en el codigo de ejemplo, pero algo debe estar mal, ya que al ejecutar el codigo me lanza el siguiente error: "HTTP/1.1 401 Unauthorized."
Parece ser que no me autentifico correctamente, pero el usuario y la clave son correctos, ya que si pongo la direccion del servicio en un navegador, me sale una ventana pidiendo usuario y clave, introduzco las mismas que pongo en el código y si accedo al web services.

Seguro que es un error sencillo, pero es la primera vez que utilizo las indy y que realizo conexiones web services. Alguién prodría orientame un poco.

Gracias y saludos.
__________________
El saber no ocupa lugar.
Responder Con Cita
  #2  
Antiguo 22-04-2011
URBANO URBANO is offline
Miembro
 
Registrado: jul 2003
Ubicación: Huelva
Posts: 126
Poder: 21
URBANO Va por buen camino
Post

He seguido revisando el componente indy y he visto la opción "BasicAuthentication". Dicha opción en el ejemplo anterior, por defecto es False y por lo que la he cambiado, quedando el codigo ahora:

Código:
procedure TForm1.Button1Click(Sender: TObject);
var
  http: TIdHttp;
  respuesta: string;
  datosPost: TIdMultiPartFormDataStream;
begin
  http:= TIdHTTP.Create(Self);
  http.Request.BasicAuthentication:=True;
  http.Request.Username:= 'urbano';
  http.Request.Password:= 'atm';
  datosPost := TIdMultiPartFormDataStream.Create;
  try
   datosPost.AddFormField('description', 'Atm1');
   datosPost.AddFormField('comments', 'firmar documento de prueba');
   datosPost.AddFormField('reference', '1');
   datosPost.AddFormField('file', 'C:\firmar1.pdf');

   respuesta := http.Post('http://api.portasigma.com/v1/docs/', datospost);
  finally
    http.Free;
    datospost.free;
  end;

  showmessage(respuesta);

end;
Ahora ya no me da el error de antes, tras ejecutar el codigo, ahora obtengo el error: "HTTP/1.1 401 Bad Request".
Alguna idea de este error?

Saludos.
__________________
El saber no ocupa lugar.
Responder Con Cita
  #3  
Antiguo 27-04-2011
URBANO URBANO is offline
Miembro
 
Registrado: jul 2003
Ubicación: Huelva
Posts: 126
Poder: 21
URBANO Va por buen camino
Viendo que en seccion del foro no tengo muchos comentarios y según observo la mayoría de las consultas sobre Indy se han realizado en la sección de varios he trasladado este hilo a esa seccion.

Gracias a todos y si alguien quiere seguir el hilo, este se encuentra en la seccion de varios.

Saludos.
__________________
El saber no ocupa lugar.
Responder Con Cita
  #4  
Antiguo 27-04-2011
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Si esto es así es precisamente porque la gente no ubica bien los temas. Este foro es más adecuado que Varios por lo que cierro el otro hilo.

// Saludos
Responder Con Cita
  #5  
Antiguo 27-04-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.057
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Amigo, URBANO, ¡¡¡tienes más de 120 mensajes y haces estas cosas!!!, por favor, recuerda nuestra guía de estilo, gracias.

Edito: Román, he acabado de unir ambos y me he encontrado con tu mensaje, voy a abrirlo de nuevo y a borrar los mensajes repetidos.
Responder Con Cita
  #6  
Antiguo 27-04-2011
URBANO URBANO is offline
Miembro
 
Registrado: jul 2003
Ubicación: Huelva
Posts: 126
Poder: 21
URBANO Va por buen camino
siente el lio. Ya lo habeis arreglado. Gracias.

Ya puesto, alguno de ustedes podría ayudarme. Conoceis algo de Indy.

Saludos.
__________________
El saber no ocupa lugar.
Responder Con Cita
  #7  
Antiguo 27-04-2011
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Como un web service utiliza el protocolo HTTP, ciertamente puedes usar Indy para acceder al servico y mandar y recibir datos, pero es algo rudimentario. Delphi cuenta con herramientas especializadas para el manejo de los servicios web.

// Saludos
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Socket Error # 10054 con TIdHTTP rolandoj Internet 10 19-01-2012 15:45:11
Ayuda urgente con Indy TIdHTTP Pugile C++ Builder 1 17-03-2011 12:21:04
TIDHTTP Con User y Pass Neeruu Varios 0 28-12-2009 13:36:49
Como pasar de TidHTTP con TWebModule a Web Service con XML ? rolandoj Internet 1 20-10-2008 17:45:48
TIdHTTP, dlls.... betto Internet 3 27-03-2007 21:49:03


La franja horaria es GMT +2. Ahora son las 01:00:46.


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
Copyright 1996-2007 Club Delphi