Sending utf8 contents with post method to server in android using HttpClient

14,846

Solution 1

Maybe you should use UTF-8 for the entity:

httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs,"UTF-8"));

Solution 2

I have worked

public static String sendData(String data) {
    String str = null;
    HttpClient client = new DefaultHttpClient();
    HttpPost httppost = new HttpPost(serverurl);
    try {
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
        nameValuePairs.add(new BasicNameValuePair("s", data));
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
        HttpResponse response = client.execute(httppost);
        str = new Scanner(response.getEntity().getContent(), "UTF-8").useDelimiter("\\A").next();

        Log.v("srv response:", str);
    } catch (SecurityException e) {
        str = "err2";
    } catch (IOException error) {
        str = "err1.1";
    } catch (NullPointerException e) {
        str = "err1.2";
    }
    return str;
}
Share:
14,846
moallemi
Author by

moallemi

Updated on July 28, 2022

Comments

  • moallemi
    moallemi almost 2 years

    this is my sample code, however I used HttpProtocolParams.setContentCharset(params, "utf-8"); im my code but when I send utf-8 data, I receive just "?????" in server side (PHP code)! what is the problem?

        HttpParams params = new BasicHttpParams();
        HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
        HttpProtocolParams.setContentCharset(params, "utf-8");
    
        HttpClient httpclient = new DefaultHttpClient(params);
    
        httpclient.getParams().setParameter("http.protocol.content-charset", "UTF-8");
        HttpPost httppost = new HttpPost("URL_TO_SERVER");
    
        try {
    
            List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
            nameValuePairs.add(new BasicNameValuePair("uname", name.getText().toString()));
            nameValuePairs.add(new BasicNameValuePair("uemail", email.getText().toString()));
            nameValuePairs.add(new BasicNameValuePair("udesc", body.getText().toString()));
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
    
            HttpResponse hresponse = httpclient.execute(httppost);
    
            String response = new Scanner(hresponse.getEntity().getContent(), "UTF-8").useDelimiter("\\A").next();
    
            hresponse.getEntity().consumeContent();
            httpclient.getConnectionManager().shutdown();
    
            Log.d("WX", response.toString());
            Toast.makeText(getApplicationContext(), response, Toast.LENGTH_LONG).show();
    
        } catch (ClientProtocolException e) {
            // TODO Auto-generated catch block
        } catch (IOException e) {
            // TODO Auto-generated catch block
        }