2016-08-21 14 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);