Raffi, After modifications, this is how my request looks like
OAuth signature base: POST&http%3A%2F%2Ftwitter.com%2Faccount %2Fupdate_profile_background_image.xml&oauth_consumer_key %3DgUutCG9HjEOT0N8IxvW9w%26oauth_nonce %3Dt64bID6gIVtpU6t7m3dsTrTUOhubJizM%26oauth_signature_method%3DHMAC- SHA1%26oauth_timestamp%3D1263403749%26oauth_token %3D29191067-7Gl0rjc5KegDdw5p0FJqcBLTmKFF8rCr9Kb3Yt7ZE%26oauth_version %3D1.0a I sign this and then add all the parameters to the request stream, this is how my stream looks like: oauth_consumer_key=gUutCG9HjEOT0N8IxvW9w&oauth_nonce=t64bID6gIVtpU6t7m3dsTrTUOhubJizM&oauth_signature=TE0lfX3WZwYAr1812GNP8uYJGKc %3D&oauth_signature_method=HMAC- SHA1&oauth_timestamp=1263403749&oauth_token=29191067-7Gl0rjc5KegDdw5p0FJqcBLTmKFF8rCr9Kb3Yt7ZE&oauth_version=1.0a&image= This is followed by the byte stream of the image. I still get a 401 as response. Can tell me what I need to change?