¿Cómo puedo consultar la API de Google hojas de cálculo con un valor de cadena?
-
25-09-2019 - |
Pregunta
Estoy utilizando Zend_Gdata_SpreadsheetsListQuery. En PHP mi consulta es:
"confirmation=$confirmation"
El problema es que $confirmation = 'AB-CD-EFG-012345';
Al parecer, los guiones están causando problemas con la consulta y la excepción lanzada es:
Excepción no detectada 'Zend_Gdata_App_HttpException' con el mensaje 'código de respuesta esperada 200, consiguió 400 Error de análisis: no válida símbolo encontrado '
¿Cómo puedo citar o escapar el valor para no provocar errores de análisis? Las comillas simples hacen que el mismo error.
Edit: Cuando estaba probando con comillas dobles hubo un error del usuario. Las comillas dobles trabajo.
Solución
Como resulta que tenía dos hojas de cálculo, uno para dev y uno para la producción y no se consulta de la que yo pensaba que era .. Esta solución funciona:
"confirmation=\"$confirmation\""
Otros consejos
Vale la pena señalar, que hay que tener cuidado con escapar. He intentado esto y no conseguir ninguna alegría. He intentado muchas combinaciones a lo largo de estas líneas:
$query->setSpreadsheetQuery("name=\"Andrew John\"");
pero en vano. Ejecución del tráfico a través de un inspector de HTTP (y la configuración de su Zend cliente HTTP para funcionar a través de un proxy es otra cosa que vale la pena mirar!) Pude ver que las URL generadas a partir de este trabajo con este aspecto:
http://spreadsheets.google.com:80/feeds/list/spreadsheetkey/od6/private/full?sq=name%3D%5C%22Andrew+John%5C%22
Esto se traduce en no válida Token (estado 400) errores. No fue así como el% 5C% 22 (\ ") la secuencia de escape, pero ¿dónde se reciba de?!
Resulta que hay una "parse_str" incrustado profundamente en código Zends, que fue agregando barras a la cadena de consulta porque por alguna razón (por defecto Ubuntu php config?) Magic_quotes_gpc fue activado en el archivo php.ini.
Al girar este fuera permitidos los URLs generados para volver a:
http://spreadsheets.google.com:80/feeds/list/spreadsheetkey/od6/private/full?sq=name%3D%22Andrew+John%22
y todo trabajo comenzó.
Por cierto, me Had que recurrir a la ejecución a través de un inspector de HTTP, porque hacerlo:
echo $query->getQueryUrl();
incorrectamente informó que estaba enviando la cadena anterior sin el 5C% antes de cada cita! Sólo va a mostrar, nunca paga a confiar en lo que dice el código ...
Por lo tanto, si usted tiene problemas con consultas estructuradas en clases gdata de Zend Framework y simplemente añadiendo comillas no lo resuelve para usted, echar un vistazo rápido para ver si tienes conjunto magic_quotes_gpc On!
Me han tratado de investigar la biblioteca Zend para esto, pero estoy teniendo ninguna alegría.
Podría ser algo tan simple como envolver el valor de apóstrofes?
Su código:
"confirmation=$confirmation"
código posible para la prueba:
"confirmation='$confirmation'"
Sólo una sugerencia al azar ...
Se puede usar urlencode
. Sin embargo, yo esperaría que el API de Zend a mango que para usted, así que comprueba que se está usando correctamente.
mi solución:
obtener los registros que no coincidan exactamente con la consulta - por la columna que tampoco parece haber prohibido letras / signos. y en el script php Hacer filtro de las filas.