Corpo do Fosrestbundle vazio quando solicitação de várias partes

No código abaixo, espero que o$request->getContents() para obter o conteúdo corporal doHTTP solicitação. Ao enviar uma solicitação que não seja de várias partes, isso funciona como esperado, embora ao usar solicitações de várias partes, o$body A variável permanece vazia.

public function postDebugAction(Request $request) {
    $body = $request->getContent();

    if (empty($body)) {
        throw new \Exception('Body empty.');
    }


    return $this->view(array(), 201);
}

Depois de leresta pergunta e resposta Eu adicionei um ouvinte corporal também.

<?php

namespace VSmart\ApiBundle\Listener;

use FOS\RestBundle\EventListener\BodyListener as BaseBodyListener;
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
use FOS\RestBundle\Decoder\DecoderProviderInterface;

class BodyListener extends BaseBodyListener {

    /**
     * @var DecoderProviderInterface
     */
    private $decoderProvider;

 ,   /**
     * @param DecoderProviderInterface $decoderProvider Provider for fetching decoders
     */
    public function __construct(DecoderProviderInterface $decoderProvider) {
        $this->decoderProvider = $decoderProvider;
    }

    /**
     * {@inheritdoc}
     */
    public function onKernelRequest(GetResponseEvent $event) {
        $request = $event->getRequest();

        if (strpos($request->headers->get('Content-Type'), 'multipart/form-data') !== 0) {
            return;
        }

        $format = 'json';

        if (!$this->decoderProvider->supports($format)) {
            return;
        }

        $decoder = $this->decoderProvider->getDecoder($format);
        $iterator = $request->request->getIterator();
        $request->request->set($iterator->key(), $decoder->decode($iterator->current(), $format));
    }

}

De acordo com o meu teste PHPUnit, isso estava funcionando embora ao usarPostman eAdvanced Rest Client para simular a solicitação, o corpo parece estar vazio novamente. Eu verifiquei isso duas vezes para executar as solicitações simuladas como PHPUnit com o depurador. O resultado é que, de fato, o corpo está vazio quando simulado através de um cliente Rest e não vazio quando executado no PHPUnit.

O caso de teste que eu usei:

URL do POST:

http://localhost/EntisServer/web/app_dev.php/api2/debug

Cabeçalhos:

Authorization: Bearer ZGYzYjY1YzY4MGY3YWM3OTFhYTI4Njk3ZmI0NmNmOWZmMjg5MDFkYzJmOWZkOWE4ZTkyYTRmMGM4NTE1MWM0Nw
Content-Type: multipart/form-data; boundary=-----XXXXX

Conteúdo:

-----XXXXX
Content-Disposition: form-data; name="json"
Content-Type: application/json; charset=utf-8

{
    "blabla": 11
}

-----XXXXX
Content-Disposition: form-data; name="q_3101"; filename="image.jpg"
Content-Type: image/jpeg

contents of a file...

-----XXXXX--

ATUALIZAR Eu não sabia se havia passado pelo depurador sem usar oBodyListener. Quando eu fiz o resultado é exatamente o mesmo. Então, sem oBodyListener o caso PHPUnit obtém o corpo, embora a solicitação simulada ainda esteja vazia.

questionAnswers(2)

yourAnswerToTheQuestion