Pregunta

Me he encontrado un tema extraño.

Tengo un par de código CURL líneas simples para llamar un servicio API. Este código se ejecuta perfectamente bien cuando se ejecuta llegad de Drupal (en el archivo PHP en el navegador y CLI), pero cuando el archivo se incluye dentro de Drupal (después del arranque), que opera con deferencia.

En condiciones normales, el resultado devuelto por el servicio API tiene muchos resultados, pero cuando se ejecuta dentro de Drupal, que sólo devuelve un resultado.

Sospecho Drupal está cambiando una configuración que está utilizando CURL, que está cambiando la forma en la API es la comprensión de la llamada.

¿Alguien sabe cuál es el problema podría ser causado por?

El código siguiente se deriva de nuestros archivos de clase api escritos dentro de una biblioteca común. Tenemos la intención de utilizar estos en el futuro en otros proyectos PHP.

Este es el código:

$params = array(
  'domain' => array(
    'www.domain1.com',
    'www.domain2.info',
    'www.domain3.in.th',
    'www.domain4.com',
    'www.domain5.in',
  )
);

$ch = curl_init();
curl_setopt_array($ch, array(
  CURLOPT_URL => 'http://api.postrank.com/v2/domain/activity?appkey=123456&format=json',
  CURLOPT_HEADER => false,
  CURLOPT_CONNECTTIMEOUT => 30,
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_SSL_VERIFYPEER => false,
  CURLOPT_POST => true,
  CURLOPT_POSTFIELDS => http_build_query($params)
));
$response = curl_exec($ch);
$err = curl_errno($ch);
curl_close($ch);

print_r($response);
¿Fue útil?

Solución

La respuesta fue que Drupal cambia el y en una cadena de consulta a & y el servicio API de distancia sólo procesa el separador de argumento y y no con &amp . Así que, naturalmente, cuando se divide los datos de envío hacia arriba, que sólo obtuvo el primer parámetro de la matriz correctamente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a drupal.stackexchange
scroll top