public String post(String url, Map<String, Serializable> data) {
		try {
			URL u = new URL(url);
			HttpURLConnection conn = (HttpURLConnection) u.openConnection();
			conn.setDoOutput(true);
			conn.setDoInput(true);
			conn.setUseCaches(false);
			conn.setRequestMethod("POST");
			conn.setRequestProperty("Content-Type",
					"application/x-www-form-urlencoded");
			OutputStreamWriter out = new OutputStreamWriter(
					conn.getOutputStream());
			StringBuffer dataStr = new StringBuffer();
			for (String s : data.keySet()) {
				dataStr.append(s + "=" + data.get(s).toString() + "&");
			}
			dataStr.deleteCharAt(dataStr.length() - 1);
			out.write(dataStr.toString());
			out.flush();
			out.close();
			BufferedReader reader = new BufferedReader(new InputStreamReader(
					conn.getInputStream(), "utf-8"));
			StringBuffer responseData = new StringBuffer();
			String line = "";
			while ((line = reader.readLine()) != null) {
				responseData.append(line);
			}
			reader.close();
			return responseData.toString();
		} catch (MalformedURLException e) {
			MLLogger.getLogger().severe("URL error: " + url);
			MLLogger.getLogger().severe(e.getLocalizedMessage());
		} catch (ProtocolException e) {
			MLLogger.getLogger().severe("Protocol error");
			MLLogger.getLogger().severe(e.getLocalizedMessage());
		} catch (UnsupportedEncodingException e) {
			MLLogger.getLogger().severe(e.getLocalizedMessage());
		} catch (IOException e) {
			MLLogger.getLogger().severe(e.getLocalizedMessage());
		}
		return null;
	}