Tuesday 11 June 2013

Blackberry: Post Data Using JSON Object

We can post the data by the JSON format. 
For this first,
1. We have to take all the keys and values in One Hash table or Array of Hash tables(Vector)
2. Convert it into JSON object.
3. Send to server.
packagecom.alishaik.thread;
importjava.io.InputStream;
importjava.io.OutputStream;
importjava.util.Hashtable;
importjavax.microedition.io.Connector;
importjavax.microedition.io.HttpConnection;
importnet.rim.blackberry.api.browser.URLEncodedPostData;
importnet.rim.device.api.io.http.HttpProtocolConstants;
importnet.rim.device.api.ui.Screen;
importnet.rim.device.api.ui.UiApplication;
importcom.hiddenbrains.ddft.common.CommonMethods;
importcom.hiddenbrains.ddft.common.MessageScreen;
importcom.hiddenbrains.ddft.common.Utility;
importcom.hiddenbrains.ddft.json.JSONObject;
public class PostDataThread extendsThread
{
    privateHttpConnection httpConnection;
    privateInputStream inputStream;
    privateStringBuffer stringBuffer=newStringBuffer();
    privateHashtable hashTable;
    privateString URL="";
    privateintindex=0;
     
      
    public PostDataThread(String url, Hashtable hash,intindex) 
    {
//      System.out.println("=========WEB SERVICE===========: "+url);        
        URL=Utility.escapeHTML(url)+CommonMethods.updateConnectionSuffix();//interface=wifi; or deviceside=false;
        this.index=index;
        this.hashTable=hash;//Here I am taking one Hashtable. You can manage according to your requirement.
    }
     
    publicvoidrun() 
    {
        try
        {
            httpConnection=(HttpConnection)Connector.open(URL);
            httpConnection.setRequestMethod(HttpConnection.POST);
             
            URLEncodedPostData oPostData =newURLEncodedPostData(URLEncodedPostData.DEFAULT_CHARSET, false);
            oPostData.setData(provideJSONObject());//IMPORTANT
             
            byte[] postBytes = oPostData.getBytes();
            httpConnection.setRequestProperty(HttpProtocolConstants.HEADER_CONTENT_TYPE,"application / requestJson");
            httpConnection.setRequestProperty(HttpProtocolConstants.HEADER_CONTENT_LENGTH, Integer.toString(postBytes.length));
            
            OutputStream strmOut = httpConnection.openOutputStream();
            strmOut.write(postBytes);
            strmOut.flush();
            strmOut.close();
             
            intresponse=httpConnection.getResponseCode();
            if(response==HttpConnection.HTTP_OK)
            {
                inputStream = httpConnection.openInputStream();
                intc;
                while((c=inputStream.read())!=-1)
                {
                    stringBuffer.append((char)c);
                }                   
                parseData(stringBuffer.toString());             
            }
            else
                parserInterface.didFailParser("Connection failure HTTP Response: "+response);
        }
        catch(finalException e) 
        {
            String msg=e.getMessage();
            if(msg==null)
                msg="No Data Found";
            //Show failure alert here
        }
        finally
        {
            try
            {
                if(httpConnection!=null)
                    httpConnection.close();
                if(inputStream!=null)
                    inputStream.close();
            
            catch(Exception e2) 
            {}          
        }
    }
     
    private String provideJSONObject()
    {
        try
        {
            JSONObject jsonObj=newJSONObject();
            jsonObj.put("data", hashTable);//Getting correct data; You can check here
//          System.out.println("======================JSON STRING FOR POSTING: "+jsonObj.toString());
            returnjsonObj.toString();
        
        catch(Exception e) 
        {
            returnnull;
        }
    }
     
    private void parseData(String responseString) 
    {
        responseString="["+responseString+"]";
        System.out.println("======================\n\n"+responseString+"\n\n===================");
        //Do what you want.        
    }
}
and the method for Utility.escapeHTML(url) is:

public static String escapeHTML(String s)
{
               StringBuffer sb = new StringBuffer();
               int n = s.length();
               for (int i = 0; i < n; i++) {
                     char c = s.charAt(i);
                      switch (c) {
                                           case ‘ ‘: sb.append(“%20″); break;
                                         default: sb.append(c); break;
                     }
             }
            return sb.toString();
}
You can get this class by this below link:

No comments:

Post a Comment