One possible explanation for the NPE is given here.
I cannot be sure without looking at the WebSphere, but the diagnosis of the linked report an NPE in SRTServletRequest.getHeaderNames() says it can happen if you call the method on the request object has gone "out of scope". In other words, after the WebSphere container's lifecycle management has disposed of it. Now if this can happen when WebSphere is used with Spring, then it mostly likely can happen when WebSphere is used on its own.
If getHeaderNames() is called in doPost(), is it possible that your code has done something that causes WebSphere to think that the servlet has finished with the request object? It might be in the servlet or in something like a Filter that touched the request object earlier.