我正在用 android 和 PHP 做一些实验,移动设备是一个客户端,它通过一种HTTP POST
方法向 PHP 发布一些代码。我正在使用以下代码:
URL url = new URL(host + webapp + syncURL);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("POST");
con.setRequestProperty("Accept-Charset", "UTF-8");
con.setFixedLengthStreamingMode(postParams.getBytes().length);
con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
con.setDoOutput(true);
//send the POST out
PrintWriter out = new PrintWriter(con.getOutputStream());
out.print(postParams);
out.close();
该变量postParams
采用以下形式:
Parámetros: hora=22%3A15%3A02&precision=25.1520004272461&fecha=2013-09-18&data=%5B%22S%C3%AD%22%5D
原始数据作为键值存储在对象中hora=22:15:02,precision=25.1520004272461,fecha=2013-09-18
。data=["Sí"]
Map
为了转换地图, postParams
我使用以下代码:
StringBuilder parametersAsQueryString = new StringBuilder();
try {
if (parameters != null) {
boolean firstParameter = true;
for (String parameterName : parameters.keySet()) {
if (!firstParameter) {
parametersAsQueryString.append(PARAMETER_DELIMITER);
}
Log.d(LOG_TAG, "Parámetro: " + parameterName + ", value: " + parameters.get(parameterName));
// Agregamos el nombre del parámetro
parametersAsQueryString.append(parameterName).append(PARAMETER_EQUALS_CHAR);
// Agregamos el valor del parámetro
try {
parametersAsQueryString
.append(URLEncoder.encode(parameters.get(parameterName), "UTF-8"));
} catch(NullPointerException npe) {
parametersAsQueryString
.append(URLEncoder.encode("", "UTF-8"));
}
firstParameter = false;
}
}
} catch (UnsupportedEncodingException uee) {
Log.d(LOG_TAG, "Error: " + uee);
但是,在数据库中的数据显示为["SÃ"]
. 该数据库是一个PostgreSQL
带有 encoding的数据库UTF-8
,所以我认为问题不存在。有人可以帮助我吗?提前致谢。