rendered paste body private class PostEnabledHttpURLConnectionRequestAdapter extends HttpURLConnectionRequestAdapter { private String body; public PostEnabledHttpURLConnectionRequestAdapter(HttpURLConnection request, String body) { super( request ); this.body = body; } public InputStream getMessagePayload() throws IOException { return new ByteArrayInputStream(body.getBytes("UTF-8")); } } private class PostEnabledOAuthConsumer extends DefaultOAuthConsumer { public PostEnabledOAuthConsumer( String consumerKey, String consumerSecret ) { super( consumerKey, consumerSecret ); } protected HttpRequest wrap(Object request, String body) { if (!(request instanceof HttpURLConnection)) { throw new IllegalArgumentException( "The default consumer expects requests of type java.net.HttpURLConnection"); } return new PostEnabledHttpURLConnectionRequestAdapter((HttpURLConnection) request, body); } public HttpRequest sign(Object request, String body) throws OAuthMessageSignerException, OAuthExpectationFailedException, OAuthCommunicationException { return sign(wrap(request, body)); } } ... PostEnabledOAuthConsumer consumer = new PostEnabledOAuthConsumer(key, secret); ... URL url = new URL("http://api.twitter.com/1/statuses/update.xml"); HttpURLConnection request = (HttpURLConnection) url.openConnection(); request.setConnectTimeout(10000); request.setReadTimeout(30000); request.setRequestMethod("POST"); request.setRequestProperty("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); String body = "status=" + URLEncoder.encode("API test", "UTF-8"); consumer.sign(request, body); request.setDoOutput(true); request.getOutputStream().write(body.getBytes("UTF-8")); request.getOutputStream().close(); request.connect(); ...