private String performJsonPost(URL url, String json) {
        try {
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            byte[] payloadAsBytes = json.getBytes(Charset.forName("UTF-8"));
            
            conn.setConnectTimeout(15000);
            conn.setReadTimeout(15000);
            conn.setRequestMethod("POST");
            conn.setRequestProperty("User-Agent", "MCU-Yggdrasil/1.0");
            conn.setRequestProperty("Content-Type", "application/json; charset=utf-8");
            conn.setRequestProperty("Content-Length", "" + payloadAsBytes.length);
            conn.setRequestProperty("Content-Language", "en-US");
            conn.setUseCaches(false);
            conn.setDoInput(true);
            conn.setDoOutput(true);
            
            DataOutputStream outStream = new DataOutputStream(conn.getOutputStream());
            outStream.write(payloadAsBytes);
            outStream.flush();
            outStream.close();
            
            InputStream inStream;
            try {
                inStream = conn.getInputStream();
            } catch (Exception e) {
                inStream = conn.getErrorStream();
            }
            
            StringBuilder response = new StringBuilder();
            byte[] buffer = new byte[1024];
            int bytesRead;
            while ((bytesRead = inStream.read(buffer)) > 0) {
                response.append(new String(buffer,"UTF-8").substring(0,bytesRead));
            }
            return response.toString();
            
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }