The [headers|json] is all about the response format. Just to make sure that is clear.
get/head/post should be self-evident
url_encode_data is supposed to be the url encoded version of what you want to send to the server. It is encoded on purpose (so that we don't have to worry about embedded spaces or other special chars).
This will result in www-url-encoded with key/value pair with xml as key and the encoded xml as the value. This may be what the OP wants, but I think what he wants is just XML.
Note that the content-type will still be application/x-www-form-urlencoded which is "wrong". I've written xml service endpoints that behave differently based on the content-type. Depending on how your service is written this may be ok or not. There is an open ticket to address the content-type issue.