[英]POSTing with Content-Type: multipart/form-data results in empty request body
最近,當我使用Content-Type: multipart/form-data
到REST接口時,我開始收到驗證錯誤。 Content-Type: application/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));
}
當我使用Content-Type: application/x-www-form-urlencoded
:
{
"request":{
"test":"message"
},
"phpinput":"test=message"
}
當我使用Content-Type: multipart/form-data
:
{
"request":[
],
"phpinput":"------WebKitFormBoundaryFyQqAxqqfuhWzHUq\r\nContent-Disposition: form-data; name=\"test\"\r\n\r\nmessage\r\n------WebKitFormBoundaryFyQqAxqqfuhWzHUq--\r\n"
}
由於沒有請求數據,因此我得到This value should not be blank
驗證錯誤。 這破壞了我的應用程序。 我已經盯着看了這么久了,可以肯定我缺少一些簡單的東西。
我正在使用Symfony 2.3.7和FOSRestBundle 1.0.0。
這個問題實際上在一夜之間解決了。 沒有重新啟動服務器,沒有更改代碼,而且我正在使用同一工具進行測試( Restlet的DHC -Chrome擴展程序)。 但是,由於這在開發環境和暫存環境中均不起作用,而現在在兩種環境中均有效,因此,唯一的答案就是測試工具,Chrome,本地緩存問題或某種組合。
獲得的經驗:使用多種測試工具。
現在,當我使用Content-Type: application/x-www-form-urlencoded
:
{
"request":{
"test":"message"
},
"phpinput":"test=message"
}
現在,當我使用Content-Type: multipart/form-data
:
{
"request":{
"test":"message"
},
"phpinput":""
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.