Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Java HttpURLConnection Returns JSON

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

like image 577
user1375026 Avatar asked Jan 06 '13 18:01

user1375026


People also ask

How do I send and receive JSON data from server?

Use JSON. stringify() to convert the JavaScript object into a JSON string. Send the URL-encoded JSON string to the server as part of the HTTP Request. This can be done using the HEAD, GET, or POST method by assigning the JSON string to a variable.


1 Answers

Use a JSON library. This is an example with Jackson:

ObjectMapper mapper = new ObjectMapper();

JsonNode node = mapper.readTree(connection.getInputStream());

// Grab statusCode with node.get("StatusCode").intValue()
// Grab CustomerName with node.get("CustomerName").textValue()

Note that this will not check the validity of the returned JSON. For this, you can use JSON Schema. There are Java implementations available.

like image 140
fge Avatar answered Sep 28 '22 07:09

fge