public String request(String method, String path, Response data, Map<String, String> options) {
		HttpURLConnection connection = null;
		String answer = null;
		
		try {
			StringBuffer sb = new StringBuffer();
			sb.append("?api_key=" + apiKey);
			
			if(method.equals("GET")) {
				sb.append(prepareGet(data));
			}
			
			URL url = new URL(apiUri + path + sb.toString());
			connection = createConnection(url, method, options);
			
			if(method.equals("POST") || method.equals("PUT")) {
				writeXml(connection, data);
			}

			status = connection.getResponseCode();
			answer = getResponse(connection);
		}
		catch(SSLHandshakeException e) {
			System.err.println("SSL verification is failing. This might be because of an attack. Contact support@authy.com");
		}
		catch(Exception e) {
			e.printStackTrace();
		}
		return answer;
	}