private URLConnection preparePost()

in src/main/java/org/apache/sling/pipes/AbstractInputStreamPipe.java [112:139]


    private URLConnection preparePost(String expr) throws IOException {
        HttpURLConnection connection;
        String url = expr;
        String data = EMPTY;
        byte[] postData;
        if (expr.contains(QUERY_CHAR)) {
            data = StringUtils.substringAfter(expr, QUERY_CHAR);
            url = StringUtils.substringBefore(expr, QUERY_CHAR);
        } else {
            //we consider POST property value to be the request body
            data = getBindings().instantiateExpression(properties.get(METHOD_POST, String.class));
        }
        connection = (HttpURLConnection) new URL(url).openConnection();
        connection.setRequestMethod(METHOD_POST);
        postData = data.getBytes(StandardCharsets.UTF_8);
        int postDataLength = postData.length;
        if (expr.contains(QUERY_CHAR)) {
            connection.setRequestProperty(HEADER_TYPE, "application/x-www-form-urlencoded");
        }
        connection.setRequestProperty( HEADER_LENGTH, Integer.toString( postDataLength ));
        connection.setDoOutput( true );
        connection.setInstanceFollowRedirects( false );
        addHeaders(connection);
        try( DataOutputStream wr = new DataOutputStream( connection.getOutputStream())) {
            wr.write( postData );
        }
        return connection;
    }