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

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:

https://www.dropbox.com/s/2i5txbjip7rs33g/PostDataThread.java

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: