public static String postData(Reader data, URL endpoint, Writer output) throws Exception
    {
        System.out.println("dfsln");
        HttpURLConnection urlc = null;
        try
        {
            urlc = (HttpURLConnection) endpoint.openConnection();
            try
            {
                urlc.setRequestMethod("POST");
                System.out.println(urlc.getRequestMethod());
            } catch (ProtocolException e)
            {
                throw new Exception("Shouldn't happen: HttpURLConnection doesn't support POST??", e);
            }
            urlc.setDoOutput(true);
            urlc.setDoInput(true);
            urlc.setUseCaches(false);
            urlc.setAllowUserInteraction(false);
            urlc.setRequestProperty("Content-type", "text/xml; charset=" + "UTF-8");

            OutputStream out = urlc.getOutputStream();

            try
            {
                Writer writer = new OutputStreamWriter(out, "UTF-8");
                pipe(data, writer);
                writer.close();
            } catch (IOException e)
            {
                throw new Exception("IOException while posting data", e);
            } finally
            {
                if (out != null)
                    out.close();
            }

            InputStream in = urlc.getInputStream();
            try
            {
                Reader reader = new InputStreamReader(in);
                pipe(reader, output);
                reader.close();
            } catch (IOException e)
            {
                throw new Exception("IOException while reading response", e);
            } finally
            {
                if (in != null)
                    in.close();
            }

        } catch (IOException e)
        {
            throw new Exception("Connection error (is server running at " + endpoint + " ?): " + e);
        } finally
        {
            if (urlc != null)
                urlc.disconnect();
        }
        
        
        return urlc.getRequestMethod();
    }