diff --git a/classes/phing/tasks/ext/HttpRequestTask.php b/classes/phing/tasks/ext/HttpRequestTask.php index 24d3fe0da5..1bb0963ac9 100644 --- a/classes/phing/tasks/ext/HttpRequestTask.php +++ b/classes/phing/tasks/ext/HttpRequestTask.php @@ -161,8 +161,12 @@ protected function createRequest() if ($this->method == HTTP_Request2::METHOD_POST) { $request->setMethod(HTTP_Request2::METHOD_POST); - foreach ($this->postParameters as $postParameter) { - $request->addPostParameter($postParameter->getName(), $postParameter->getValue()); + if ($this->isHeaderSet('content-type', 'application/json')) { + $request->setBody(json_encode(array_map(function ($postParameter) {return [$postParameter->getName() => $postParameter->getValue()];}, $this->postParameters))); + } else { + foreach ($this->postParameters as $postParameter) { + $request->addPostParameter($postParameter->getName(), $postParameter->getValue()); + } } } @@ -178,6 +182,19 @@ protected function createRequest() return $request; } + private function isHeaderSet($headerName, $headerValue) + { + $isSet = false; + + foreach ($this->headers as $header) { + if ($header->getName() === $headerName && $header->getValue() === $headerValue) { + $isSet = true; + } + } + + return $isSet; + } + /** * Checks whether response body matches the given regexp *