I'm not sure, but it seems like the objective has changed since the beginning of this thread.
For example there is a irule to stop command execution via URI but when i try to execute command in POST it does not work as it only ready uri part. I need to control post requests.
If you just need to filter on the URI portion of a request (GET, POST, etc.). Example:
POST /foo/bar/test.exe HTTP/1.1
GET /foo/bar/test.exe HTTP/1.1
then the original iRule using HTTP::uri should work. If however you need to filter on the POST payload, the data that comes after the HTTP headers, then you need to first HTTP::collect it.