Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Salut,
Je ne sais pas si c'est moi qui fait un truc impossible, mais je me heurte à un pb avec le rawBody sur les requêtes http.
J'ai un helper qui récupère le raw du body et en fonction de l'entête "Content-Type" refile les params au body en les décodant (inspiré de Matthew).
Tout bête, le code dans l'init du helper:
public function init() { $request = $this->getRequest(); $rawBody = $request->getRawBody(); if (false === $rawBody) { return; } $contentType = $request->getHeader('Content-Type'); switch(true) { case (strstr($contentType, 'application/json')): $this->setBodyParams( Zend_Json::decode($rawBody) ); break; case (strstr($contentType, 'application/xml')): $params = new Zend_Config_Xml($rawBody); $this->setBodyParams( $params->toArray() ); break; default: if ($request->isPut()) { parse_str($rawBody, $params); $this->setBodyParams($params); } break; } }
Donc, si j'envoie du JSON, ça décodera les params automatiquement.
Un exemple tout bête:
Si j'exécute une requête Ajax avec jQuery:
$.ajax({ url: formAction type: 'POST', dataType: 'json', data: $('#monchamp').serialize(), error: ajaxErrorHandler, success: function(responseText, textStatus) { // success } });
Si dans mon champ input je saisi une chaine contenant plusieurs points ("."), ex: "un.exemple@monsite.com",
le serveur tombe presque et la requête n'aboutit jamais parce que ça part dans les choux sur la ligne :
$rawBody = $request->getRawBody();
Quand je regarde dans la méthode getRawBody(), je ne vois rien de particulier qui pourrait causer un tel problème. ($body = file_get_contents('php://input'); )
Bug de php ? Une idée ? C'est peut-être moi qui fait un truc de travers.
Je suis sur windows (seven) avec php5.2.9.
Merci,
A+ benjamin.
Hors ligne