BlackBerry read json string from an URL -


i tried read json string loading url, not find complete code sample. can 1 provide or point me complete client code. i'm newer bb development.

this have done still can't work please me.

thanks!

to read , parse data url need implement 2 routines. first 1 of them handle reading data specified url on http connection, , second 1 parse data.

check following application httpurlreaderdemoapp, first read data specified url , parse retrieved data.

classes:

  • httpurlreaderdemoapp - uiapplication instance
  • httpresponselistener - interface used notify other classes http request status
  • httpurlreader - reads data given url
  • appmainscreen - mainscreen instance
  • dataparser - parse data
  • datamodel - data definition

screenshots:

  • request data

    request data

  • when data retrieved successfully

    when data retrieved successfully

  • parsed data

    parsed data

implementation:

httpurlreaderdemoapp

public class httpurlreaderdemoapp extends uiapplication {     public static void main(string[] args) {         httpurlreaderdemoapp theapp = new httpurlreaderdemoapp();         theapp.entereventdispatcher();     }      public httpurlreaderdemoapp() {         pushscreen(new appmainscreen("http url reader demo application"));     } } 

httpresponselistener

public interface httpresponselistener {     public void onhttpresponsefail(string message, string url);      public void onhttpresponsesuccess(byte bytes[], string url); } 

httpurlreader

public class httpurlreader implements runnable {     private string url;     private httpresponselistener listener;      public httpurlreader(string url, httpresponselistener listener) {         this.url = url;         this.listener = listener;     }      private string getconncetiondependenturlsuffix() {         // not implemented         return "";     }      private void notifysuccess(byte bytes[], string url) {         if (listener != null) {             listener.onhttpresponsesuccess(bytes, url);         }     }      private void notifyfailure(string message, string url) {         if (listener != null) {             listener.onhttpresponsefail(message, url);         }     }      private boolean isvalidurl(string url) {         return (url != null && url.length() > 0);     }      public void run() {         if (!isvalidurl(url) || listener == null) {             string message = "invalid parameters.";             message += !isvalidurl(url) ? " invalid url." : "";             message += (listener == null) ? " invalid httpresponselisterner instance."                     : "";             notifyfailure(message, url);             return;         }          // update url depending on connection type         url += deviceinfo.issimulator() ? ";deviceside=true"                 : getconncetiondependenturlsuffix();          // open connection , retrieve data         try {             httpconnection httpconn = (httpconnection) connector.open(url);             int status = httpconn.getresponsecode();             if (status == httpconnection.http_ok) {                 inputstream input = httpconn.openinputstream();                 byte[] bytes = ioutilities.streamtobytes(input);                 input.close();                 notifysuccess(bytes, url);             } else {                 notifyfailure("failed retrieve data, http response code: "                         + status, url);                 return;             }             httpconn.close();         } catch (exception e) {             notifyfailure("failed retrieve data, exception: ", e.tostring());             return;         }     } } 

appmainscreen

public class appmainscreen extends mainscreen implements httpresponselistener {     private final string url = "http://codeincloud.tk/json_android_example.php";      public appmainscreen(string title) {         settitle(title);     }      private menuitem mireaddata = new menuitem("read data", 0, 0) {         public void run() {             requestdata();         }     };      protected void makemenu(menu menu, int instance) {         menu.add(mireaddata);         super.makemenu(menu, instance);     }      public void close() {         super.close();     }      public void showdialog(final string message) {         uiapplication.getuiapplication().invokelater(new runnable() {             public void run() {                 dialog.alert(message);             }         });     }      private void requestdata() {         thread urlreader = new thread(new httpurlreader(url, this));         urlreader.start();         showdialog("request data from\n \"" + url + "\"\n started.");     }      public void onhttpresponsefail(string message, string url) {         showdialog("failure mesage:\n" + message + "\n\nurl:\n" + url);     }      public void onhttpresponsesuccess(byte bytes[], string url) {         showdialog("data retrived from:\n" + url + "\n\ndata:\n"                 + new string(bytes));          // parse response         datamodel datamodel = dataparser.getdata(bytes);         if (datamodel == null) {             showdialog("failed parse data: " + new string(bytes));         } else {             showdialog("parsed data:\nname: " + datamodel.getname()                     + "\nversion: " + datamodel.getversion());         }     } } 

dataparser

public class dataparser {     private static final string name = "name";     private static final string version = "version";      public static datamodel getdata(byte data[]) {         string rawdata = new string(data);         datamodel datamodel = new datamodel();          try {             jsonobject jsonobj = new jsonobject(rawdata);             if (jsonobj.has(name)) {                 datamodel.setname(jsonobj.getstring(name));             }             if (jsonobj.has(version)) {                 datamodel.setversion(jsonobj.getstring(version));             }         } catch (exception e) {             e.printstacktrace();             return null;         }          return datamodel;     } } 

datamodel

public class datamodel {     private string name;     private string version;      public string getname() {         return name;     }      public void setname(string name) {         this.name = name;     }      public string getversion() {         return version;     }      public void setversion(string model) {         this.version = model;     } } 

Comments

Popular posts from this blog

blackberry 10 - how to add multiple markers on the google map just by url? -

php - guestbook returning database data to flash -

delphi - Dynamic file type icon -