Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 11-11-2009 12:03:39

Delprog
Administrateur
Date d'inscription: 29-09-2008
Messages: 670

[ZF1.9.5]Zend_Controller_Request_Http::getRawBody(), bug ?

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:

Code:

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:

Code:

$.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 :

Code:

$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.


http://www.anonymation.com/ - anonymation - Studio de création.
http://code.anonymation.com/ - anonymation - blog - développement et architecture web

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages