Services 6.x.3.1 y REST

Events happening in the community are now at Drupal community events on www.drupal.org.
oleurud's picture

Buenas a todos

Llevo varios días intentando que un Drupal 7 acceda a la información de un webservice REST en Drupal 6.

Os cuento un poco cómo está el Drupal 6: tiene configurado el servidor REST con autenticacion por session. Solo el usuario admin puede acceder al único endpoint que tiene activada toda la infromación que nos permite services. Lógicamente, desde el navegador y logado como admin puedo acceder a toda la información.

Desde el Drupal 7, tengo montado el siguiente php tras mucho investigar y leer decenas de ejemplos y post que se contradicen unos con otros:

<?php
$base_url
= 'URL_D6';
   
// Login
  
$data = array(
  
'username' => 'ADMIN',
     
'password' => 'EL_PASS_DE_ADMIN',
);

   
$data = http_build_query($data, '', '&');
 
$options = array(
   
'headers' => array(
    
'content-type' => 'text/xml',
     ),
    
'method' => 'POST',
    
'data' => $data
);

   
$login = drupal_http_request($base_url . '/user/login', $options);

 
// El login es OK?
if ($login->code == 200) {
     
// Guardamos la Cookie de autenticacion
       
$cookie = substr($login->headers['set-cookie'], 0, strpos($login->headers['set-cookie'], ';'));

      
$data = array();

     
$options = array(
         
'headers' => array(
              
'content-type' => 'text/xml',
          
'Cookie' => $cookie
        
),
          
'method' => 'GET',
         
'data' => http_build_query($data, '', '&')
        );

       
$request = drupal_http_request($base_url . '/api/user/1', $options);
    
print_r($request);
}

?>

Pida el dato que pida, siempre obtengo un error 401 y dice que no estoy autenticado: Unauthorized: Access denied for user 0 "anonymous"

Ya no se qué probar o dónde buscar más información. A ver si alguno os habéis encontrado en esta situación y me podéis indicar qué hago mal o qué leer

Muchas gracias

Comments

Promocionar a Spanish

tunic's picture

Este post debería ser promocionado a Spanish para aumentar su visibilidad.

el 29 de diciembre veremos

oskar_calvo's picture

el 29 de diciembre veremos como usar drupal_http_request en el ciball, pasate y charlarmos :)

Oskar

Posible solución

Daniel Molina's picture

Hace unas semanas estuve peleando con lo mismo, a ver si te puedo ayudar.

Imagino que uno de los ejemplos que has visto es éste: http://drupal.org/node/910598. Fíjate en que $base_url apunte al endpoint completo, no solamente al raíz de Drupal. En tu caso sería URL_D6/api (en la segunda llamada tendrás que corregir el path).

El 'Access denied for user 0 "anonymous"' sale porque se llama al path 'user/login' en vez del path 'tu_endpoint/user/login' (no olvides habilitar este Resource en tu endpoint).

Dani.

Busca documentación sobre

lelizondo's picture

Busca documentación sobre REST Services API en http://drupanium.org/api ahí encontrarás las rutas correctas.

Luis

Madrid

Group organizers

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds: