Php 内容类型为的过帐:多部分/表单数据导致请求正文为空

Php 内容类型为的过帐:多部分/表单数据导致请求正文为空,php,rest,symfony,fosrestbundle,Php,Rest,Symfony,Fosrestbundle,最近,我使用内容类型:multipart/form data发布到我的REST界面时,开始出现验证错误内容类型:应用程序/x-www-form-urlencoded正在运行 以下是我的测试功能: /** * @Rest\Route("/testtype") */ public function postTypeTestAction() { $request = $this->getRequest()->request->all(); $phpContents

最近,我使用
内容类型:multipart/form data
发布到我的REST界面时,开始出现验证错误<代码>内容类型:应用程序/x-www-form-urlencoded正在运行

以下是我的测试功能:

/**
 * @Rest\Route("/testtype")
 */
public function postTypeTestAction()
{
    $request = $this->getRequest()->request->all();
    $phpContents = file_get_contents("php://input");

    return FOSView::create()->setStatusCode(200)->setData(array('request'=>$request, 'phpinput' => $phpContents));
}
当我使用
内容类型发布时:application/x-www-form-urlencoded

{
  "request":{
    "test":"message"
   },
  "phpinput":"test=message"
}
{
  "request":{
    "test":"message"
   },
  "phpinput":"test=message"
}
当我使用
内容类型:多部分/表单数据发布时

{
  "request":[
  ],
 "phpinput":"------WebKitFormBoundaryFyQqAxqqfuhWzHUq\r\nContent-Disposition: form-data; name=\"test\"\r\n\r\nmessage\r\n------WebKitFormBoundaryFyQqAxqqfuhWzHUq--\r\n"
{
  "request":{
    "test":"message"
   },
  "phpinput":""
}
}

由于没有请求数据,我得到的
值不应为空
验证错误。这破坏了我的申请。我盯着这个看了这么久,我肯定我错过了一些简单的东西


我使用的是Symfony 2.3.7和FOSRestBundle 1.0.0。

这个问题在一夜之间就解决了。无需重新启动服务器,无需更改代码,我正在使用相同的工具进行测试(-Chrome扩展)。但是,由于这在开发环境和登台环境中都不起作用,而且现在在这两种环境中都起作用,因此,我唯一的答案就是测试工具Chrome、本地缓存问题或某种组合

经验教训:使用多种测试工具

现在,当我使用
内容类型:application/x-www-form-urlencoded
发表文章时:

{
  "request":{
    "test":"message"
   },
  "phpinput":"test=message"
}
{
  "request":{
    "test":"message"
   },
  "phpinput":"test=message"
}
现在,当我使用
内容类型:多部分/表单数据发布时:

{
  "request":[
  ],
 "phpinput":"------WebKitFormBoundaryFyQqAxqqfuhWzHUq\r\nContent-Disposition: form-data; name=\"test\"\r\n\r\nmessage\r\n------WebKitFormBoundaryFyQqAxqqfuhWzHUq--\r\n"
{
  "request":{
    "test":"message"
   },
  "phpinput":""
}

这个问题一夜之间就解决了。无需重新启动服务器,无需更改代码,我正在使用相同的工具进行测试(-Chrome扩展)。但是,由于这在开发环境和登台环境中都不起作用,而且现在在这两种环境中都起作用,因此,我唯一的答案就是测试工具Chrome、本地缓存问题或某种组合

经验教训:使用多种测试工具

现在,当我使用
内容类型:application/x-www-form-urlencoded
发表文章时:

{
  "request":{
    "test":"message"
   },
  "phpinput":"test=message"
}
{
  "request":{
    "test":"message"
   },
  "phpinput":"test=message"
}
现在,当我使用
内容类型:多部分/表单数据发布时:

{
  "request":[
  ],
 "phpinput":"------WebKitFormBoundaryFyQqAxqqfuhWzHUq\r\nContent-Disposition: form-data; name=\"test\"\r\n\r\nmessage\r\n------WebKitFormBoundaryFyQqAxqqfuhWzHUq--\r\n"
{
  "request":{
    "test":"message"
   },
  "phpinput":""
}