簡體   English   中英

使用Content-Type進行發布:multipart / form-data導致空的請求正文

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM