Question: is response.redirect always an http GET response? or it could be POST?....

Answer: 
Assuming that you are using asp.net, maybe server.transfer might be what you are searching for. Instead of sending the new url back to the client, you can pass the processing to another page and keep the form state.
Contrary to most answers here the redirected HTTP request is *only* GET if

* the original request was GET, or
* the status code was 303, or
* the status code was 301 or 302 and the original request was POST.