I've spent very refreshing saturday evening with very same problem. At least I've some Karhu beer to relieve some pain.
Anyway. There seems to be a bug in http redirection filter which causes some problems. If you POST data and server responds e.g. 302, the next request the API will do automatically is actually GET (!).
So workaround for this is to disable the whole filter and implement that redirection logic by yourself.
You will get that Location header value in EGotResponseHeader event, so do something like this:
RHTTPFilterCollection filtColl = iSession.FilterCollection();
RStringF filterName = iSession.StringPool().StringF(HTTP::ERedirect,RHTTPSession::GetTable());
filtColl.RemoveFilter( filterName );
BTW that -7370 error happens because your implementation of MHTTPDataSupplier::Reset() returns something else than KErrNone.
RStringF location = iSession.StringPool().StringF(HTTP::ELocation,RHTTPSession::GetTable());
RHTTPHeaders responseHeaders( aTransaction.Response().GetHeaderCollection() );
if( responseHeaders.GetField(location, 0, locationValue) == KErrNone )
TBuf8<255> urides( locationValue.StrF().DesC() );
uri.Parse( urides );
iTransaction.Request().SetURIL( uri );