Consumir un Web service rest con java

Hola de nuevo a toda la comunidad,
Queria ver si alguien me puede ayudar a saber como consumir un servicio web rest, ya logro comunicarme con el servicio pero necesito mandar una autenticación y una body ( un xml que recibiré de algún lado) tengo el siguiente código

public void webs(String xml ) throws IOException
        {
               
                String uri ="direccion de webservice https";
               
                URL url = new URL(uri);
                HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();

                connection.setRequestMethod("POST");
                connection.setRequestProperty("Authorization", "Basic "+ Base64.encode(("usuario" + ":" + "contraseña").getBytes()));
                connection.setRequestProperty("content-type", "text/xml; charset=UTF-8");

//              Aqui me gustaria mandarle el cuerpo pero no es correcto
                connection.setRequestProperty("body", archivo);
               
                connection.setConnectTimeout(10000);
                connection.connect();
               
                System.out.println("Codigo : " + connection.getResponseCode());
               
        }

Use este modo por que alguna vez logre hacer algo parecido con python se que no es igual pero pensé en empezar por ahí o usar apache xcf

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de ezamudio

output

Necesitas indicar:

connection.setDoOutput(true);

Y luego escribir al stream de salida de la conexión:

connection.setRequestProperty("Content-Length", Integer.toString(archivo.length));
connection.getOutputStream().write(archivo); //suponiendo que archivo sea tipo byte[]
connection.getOutputStream().flush();

No necesitas invocar connect() en ningún momento cuando haces esto. Simplemente después de escribir al stream, empiezas a leer la respuesta del stream de entrada. Puedes checar la longitud de la misma, si te la devuelve el server, usando connection.getContentLength().

Gracias

Muchas gracias si tenias toda la razón