I'm trying to make a http get request which returns a json response. I need some of the values from the json response to be stored in my session. I have this:
public String getSessionKey(){
BufferedReader rd = null;
StringBuilder sb = null;
String line = null;
try {
URL url = new URL(//url here);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.connect();
rd = new BufferedReader(new InputStreamReader(connection.getInputStream()));
sb = new StringBuilder();
while ((line = rd.readLine()) != null)
{
sb.append(line + '\n');
}
return sb.toString();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (ProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return "";
}
This returns the JSON in a string:
{ "StatusCode": 0, "StatusInfo": "Processed and Logged OK", "CustomerName": "Mr API"}
I need to store StatusCode and CustomerName in the session. How do I deal with returning JSON with java?
Thanks
Use a JSON library. This is an example with Jackson:
Note that this will not check the validity of the returned JSON. For this, you can use JSON Schema. There are Java implementations available.
You can use Gson. Here is the code to help you:
Now you know how to get from and put those in session. You need to include Gson library in classpath.
Check out the GSON library for converting json into objects and vice versa.
http://code.google.com/p/google-gson/
You could try this:
And do not forget to wrap it into try-catch
For session storage you can use an Aplication context class: Application, or use a static global variable.
For parsing JSON from HttpURLConnection you can use a method such as this:
My method with the parameters in the call to use the Service or AsyncTask