2016-08-21 2 views
2

Я отправляю данные хинди/английского/маратхи на сервер. Серверная сторона может обнаруживать данные, если они находятся на английском языке, но они не могут обнаружить ее, если данные находятся на хинди/маратхи. Я использую нижеприведенный код для этого -Различать язык данных, отправленных на WebServer?

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

Пожалуйста, дайте мне знать, если я делаю что-то неправильно в этом коде. Также дайте мне знать, какой метод подходит в соответствии с моими требованиями.

Заранее спасибо.

+0

Если сервер не в состоянии обнаружить его, не вы должны искать пути решения этой проблемы на стороне сервера? – frz3993

+0

Где вы принимали? –

+0

Вы можете вставить свой код api здесь –

ответ

0

Кодировать ваши параметры вручную вместо передачи символьного кодирования (UTF-8) в OutputStreamWriter. Попробуйте сделать следующее:

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

Или

Charset.forName("UTF-8").encode(param); 
Смежные вопросы