Added support for raw_input_stream property.
diff --git a/system/core/Input.php b/system/core/Input.php
index f181c27..97884d3 100644
--- a/system/core/Input.php
+++ b/system/core/Input.php
@@ -103,22 +103,16 @@
 	 */
 	protected $headers = array();
 
-	/**
-	 * Raw input stream data as received from php://input
-	 *
-	 * @see	CI_Input::raw_input_stream()
-	 * @var	array
-	 */
 	protected $_raw_input_stream = NULL;
 
 	/**
-	 * Input stream data
-	 *
-	 * Parsed from raw_input_stream at runtime
-	 *
-	 * @see	CI_Input::input_stream()
-	 * @var	array
-	 */
+	* Input stream data
+	*
+	* Parsed from php://input at runtime
+	*
+	* @see	CI_Input::input_stream()
+	* @var	array
+	*/
 	protected $_input_stream = NULL;
 
 	/**
@@ -307,54 +301,35 @@
 	// ------------------------------------------------------------------------
 
 	/**
-	 * Fetch raw data from php://input stream
-	 *
-	 * Useful when data is not an array.
-	 */
-	public function raw_input_stream()
-	{
-		// Prior to PHP 5.6, the input stream can only be read once,
-		// so we'll need to check if we have already done that first.
-		if (is_null($this->_raw_input_stream))
-		{
-			$this->_raw_input_stream = file_get_contents('php://input');
-		}
-
-		return $this->_raw_input_stream;
-	}
-	
-	// ------------------------------------------------------------------------
-
-	/**
-	 * Fetch an item from the input stream
-	 *
-	 * Useful when you need to access PUT, DELETE or PATCH request data.
-	 *
-	 * @param	string	$index		Index for item to be fetched
-	 * @param	bool	$xss_clean	Whether to apply XSS filtering
-	 * @return	mixed
-	 */
+	* Fetch an item from the php://input stream
+	*
+	* Useful when you need to access PUT, DELETE or PATCH request data.
+	*
+	* @param	string $index Index for item to be fetched
+	* @param	bool $xss_clean Whether to apply XSS filtering
+	* @return	mixed
+	*/
 	public function input_stream($index = NULL, $xss_clean = NULL)
 	{
-		parse_str($this->raw_input_stream(), $this->_input_stream);
+	// Prior to PHP 5.6, the input stream can only be read once,
+	// so we'll need to check if we have already done that first.
+		if ( ! is_array($this->_input_stream))
+		{
+			parse_str($this->raw_input_stream, $this->_input_stream);
+			is_array($this->_input_stream) OR $this->_input_stream = array();
+		}
 		return $this->_fetch_from_array($this->_input_stream, $index, $xss_clean);
 	}
-	
+
 	// ------------------------------------------------------------------------
 
-	/**
-	 * Fetch an item from the input stream
-	 *
-	 * Useful when you need to access input that's been send as json'
-	 *
-	 * @param	string	$index		Index for item to be fetched
-	 * @param	bool	$xss_clean	Whether to apply XSS filtering
-	 * @return	mixed
-	 */
-	public function json_input_stream($index = NULL, $xss_clean = NULL)
+	public function __get($name)
 	{
-		$json_input_stream = json_decode($this->raw_input_stream(), true);
-		return $this->_fetch_from_array($json_input_stream, $index, $xss_clean);
+		if ($name === 'raw_input_stream')
+		{
+			isset($this->_raw_input_stream) OR $this->_raw_input_stream = file_get_contents('php://input');
+			return $this->_raw_input_stream;
+		}
 	}
 
 	// ------------------------------------------------------------------------
diff --git a/user_guide_src/source/changelog.rst b/user_guide_src/source/changelog.rst
index 5c5cd5e..311aec2 100644
--- a/user_guide_src/source/changelog.rst
+++ b/user_guide_src/source/changelog.rst
@@ -492,6 +492,8 @@
       -  Added an option for ``_clean_input_keys()`` to return FALSE instead of terminating the whole script.
       -  Deprecated the ``is_cli_request()`` method, it is now an alias for the new :php:func:`is_cli()` common function.
       -  Added an ``$xss_clean`` parameter to method ``user_agent()`` and removed the ``$user_agent`` property.
+      -  Added gettable property ``raw_input_stream`` to access the **php://input** data.
+      -  Changed method ``input_stream()`` to obtain the data from ``raw_input_stream`` property.
 
    -  :doc:`Common functions <general/common_functions>` changes include:
 
diff --git a/user_guide_src/source/libraries/input.rst b/user_guide_src/source/libraries/input.rst
index 967f69d..2b71b34 100644
--- a/user_guide_src/source/libraries/input.rst
+++ b/user_guide_src/source/libraries/input.rst
@@ -91,8 +91,14 @@
 and access multiple variables without caring that you might only have
 one shot at all of the POST data.
 
-CodeIgniter will take care of that for you, and you can access data
-from the **php://input** stream at any time, just by calling the
+CodeIgniter will take care of that for you, and you can read the data
+from the **php://input** stream at any time, just by using the
+``raw_input_stream`` property::
+
+	$this->input->raw_input_stream;
+
+Additionally if the input stream is formated in a query string fashion
+you can access it's values, just by calling the
 ``input_stream()`` method::
 
 	$this->input->input_stream('key');