POST UTF-8 encoded data to the server in J2ME

By: Ash Viewed: 153222 times    

This sample code shows how to POST UTF-8 encoded data to the server in J2ME. The first requirement is to set the content-type for the connection. You should also use a OutputStreamWriter and pass "UTF-8" as the second parameter. Also note that the first parameter passed to this function 'data' should be encoded to UTF-8 bytes.

private void sendData(StringBuffer data,String serverUrl) throws IOException  
    {            
        HttpConnection connection = (HttpConnection) Connector.open(serverUrl,Connector.READ_WRITE);
        
        connection.setRequestMethod(HttpConnection.POST);        
        connection.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
        connection.setRequestProperty("Content-Length",String.valueOf(data.toString().getBytes("UTF-8").length));        
        connection.setRequestProperty("User-Agent","Profile/MIDP-2.0 Configuration/CLDC-1.1");
        connection.setRequestProperty("Accept-Charset","UTF-8;q=0.7,*;q=0.7");
        connection.setRequestProperty("Accept-Encoding","gzip, deflate");
        connection.setRequestProperty("Accept","text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5");        
        
        InputStream inputStream = null;
        OutputStreamWriter out = null;
        byte[] readData = new byte[HTTP_INPUT_BUFFER_SIZE];        
                 
        String response;       
        
        try
        {
            // --- write ---
            out = new OutputStreamWriter(connection.openOutputStream(),"UTF-8");            
            out.write(data.toString());            
            out.close();
            // --- read ---
            
            int responseCode = connection.getResponseCode();            
            
            if (responseCode != HttpConnection.HTTP_OK)
            {
                throw new IOException("HTTP response code: " + responseCode);
            }
            
            inputStream = connection.openInputStream();
                                   
            int actual = inputStream.read(readData);
            
            if (actual==0)
            {
                throw new IOException("No response from server");                
            }
            
            
            response = new String(readData,0,actual,"UTF-8");
            
            if (!response.equalsIgnoreCase(SUCCESS_MESSAGE))
            {
                throw new IOException(response);
            }            
        }
        finally
        {            
            if (out!=null)
            {
                try
                {
                    out.close();
                } catch (IOException ex) {}
            }
            if (inputStream!=null)
            {
                try
                {
                    inputStream.close();
                } catch (IOException ex) {}
            }                       
        }        
    }

Most Viewed Articles (in J2ME )

Latest Articles (in J2ME)

Comment on this tutorial