Excellent uses for netcat at http://www.foureleven.org/pub/nc/ This shows what's needed in a POST. N.b. the length is required! http://www.jmarshall.com/easy/http/#othermethodshttp://www.jmarshall.com/easy/http/#othermethods See file java/encoding.txt too. HTML forms ALWAYS HTTP encode param names and values (e.g. from names and values). Therefore, it is thoroughly safe to use special characters in http input element names (and, obviously, values). "get" mode forms (default) send no Content-Type REDIRECTS When a client gets a redirect back, they make the new GET request with params exactly as given in the redirect. They do not-resened params of the original request. If that's what the server wants, then it needs to return the original params back to the client in a new query string. At least with FF, get-method posts silently drop query string on the action. Kinda funny that the params are preseved if method is post. Accept header value is perfectly encoded just like you would want it to be (of course with the top-level ?, =, & not encoded so you can parse GET params).