2016-08-21 1 views
2

Je poste des données en hindi/anglais/marathi au serveur. Le côté serveur est capable de détecter les données s'il est en anglais mais elles ne sont pas en mesure de les détecter si les données sont en hindi/marathi. J'utilise le code mentionné ci-dessous pour cela -Différencier la langue des données envoyées à un serveur Web?

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; 
    } 
} 

J'ai également essayé en réglant le codage mais cela ne fonctionne toujours pas. Mentionnés ci-dessous est le code dans lequel je coder les données -

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; 
    } 
} 

S'il vous plaît laissez-moi savoir si je fais quelque chose de mal dans ce code. Aussi laissez-moi savoir quelle méthode est appropriée selon mes exigences.

Merci d'avance.

+0

Si le serveur ne peut pas le détecter, ne devrait pas vous être résoudre ce problème sur le côté serveur? – frz3993

+0

Où avez-vous hébergé? –

+0

Pouvez-vous coller votre code api ici –

Répondre

0

Encodez vos paramètres manuellement au lieu de transmettre le codage de caractères (UTF-8) à OutputStreamWriter. Essayez de faire ce qui suit:

byte[] paramBytes = param.getBytes("UTF-8"); 

Ou

Charset.forName("UTF-8").encode(param);