Android 区分发送到Web服务器的数据的语言?
我正在将印地语/英语/马拉地语数据发布到服务器。如果数据是英文的,服务器端可以检测到,但是如果数据是印地语/马拉地语的,服务器端无法检测到。我使用下面提到的代码来实现这个-Android 区分发送到Web服务器的数据的语言?,android,webserver,android-webservice,Android,Webserver,Android Webservice,我正在将印地语/英语/马拉地语数据发布到服务器。如果数据是英文的,服务器端可以检测到,但是如果数据是印地语/马拉地语的,服务器端无法检测到。我使用下面提到的代码来实现这个- public static String sendDataToServer(String urlString, String parameter) { try { if (TextUtils.isEmpty(urlString) || TextUtils.isEmpty(parameter))
public static String sendDataToServer(String urlString, String parameter) {
try {
if (TextUtils.isEmpty(urlString) || TextUtils.isEmpty(parameter))
return null;
URL url = new URL(urlString);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("POST");
urlConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
urlConnection.setDoInput(true);
urlConnection.setDoOutput(true);
urlConnection.setFixedLengthStreamingMode(parameter.length());
urlConnection.setReadTimeout(10000);
urlConnection.setConnectTimeout(45000);
urlConnection.connect();
DataOutputStream dataOutputStream = new DataOutputStream(urlConnection.getOutputStream());
dataOutputStream.writeBytes(parameter);
dataOutputStream.flush();
dataOutputStream.close();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
String input;
StringBuilder stringBuilder = new StringBuilder();
while ((input = bufferedReader.readLine()) != null) {
stringBuilder.append(input);
}
bufferedReader.close();
return stringBuilder.toString();
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
我也尝试过设置编码,但仍然不起作用。下面提到的是我对数据进行编码的代码-
public static String submitDataToServer(String urlString, String parameter1, String parameter2) {
try {
Uri.Builder builder = new Uri.Builder()
.appendQueryParameter(Constants.USER_NAME, parameter1)
.appendQueryParameter(Constants.USER_REVIEW, parameter2);
String query = builder.build().getEncodedQuery();
URL url = new URL(urlString);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(10000);
conn.setConnectTimeout(15000);
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setDoInput(true);
conn.setRequestProperty("Content-Length", "" + query.getBytes().length);
conn.setDoOutput(true);
OutputStream os = conn.getOutputStream();
BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(os, "UTF-8"));
writer.write(query);
writer.flush();
writer.close();
os.close();
conn.connect();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String input;
StringBuilder stringBuilder = new StringBuilder();
while ((input = bufferedReader.readLine()) != null) {
stringBuilder.append(input);
}
bufferedReader.close();
return stringBuilder.toString();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
请让我知道,如果我在这个代码中做了什么错误。同时让我知道哪种方法适合我的要求
提前感谢。手动编码参数,而不是将字符编码(UTF-8)传递给OutputStreamWriter。 尝试执行以下操作:
byte[] paramBytes = param.getBytes("UTF-8");
或
如果服务器无法检测到它,您不应该在服务器端解决这个问题吗?您在哪里托管过?您可以将api代码粘贴到这里吗
Charset.forName("UTF-8").encode(param);