/** * Convert a cookie list into a JSONObject. A cookie list is a sequence of name/value pairs. The * names are separated from the values by '='. The pairs are separated by ';'. The names and the * values will be unescaped, possibly converting '+' and '%' sequences. To add a cookie to a * cooklist, cookielistJSONObject.put(cookieJSONObject.getString("name"), * cookieJSONObject.getString("value")); * * @param string A cookie list string * @return A JSONObject * @throws JSONException If something goes wrong */ public static JSONObject toJSONObject(final String string) throws JSONException { final JSONObject jo = new JSONObject(); final JSONTokener x = new JSONTokener(string); while (x.more()) { final String name = Cookie.unescape(x.nextTo('=')); x.next('='); jo.put(name, Cookie.unescape(x.nextTo(';'))); x.next(); } return jo; }
public void postData(int action, String url) throws JSONException { // Create a new HttpClient and Post Header HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost(url); JSONObject j = new JSONObject(); try { switch (action) { case POST_READ: j.put("Command", "Read"); j.put("Dept", depts); Log.i(TAG, "DEPTS: " + depts); break; } JSONArray array = new JSONArray(); array.put(j); // Post the data: httppost.setHeader("json", j.toString()); httppost.getParams().setParameter("jsonpost", array); // Execute HTTP Post Request HttpResponse response = httpclient.execute(httppost); // for JSON: if (response != null) { InputStream is = response.getEntity().getContent(); BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF8")); StringBuilder sb = new StringBuilder(); String line = null; try { while ((line = reader.readLine()) != null) { sb.append(line + "\n"); } } catch (IOException e) { Log.e(TAG, e.toString()); e.printStackTrace(); } finally { try { is.close(); } catch (IOException e) { Log.e(TAG, e.toString()); e.printStackTrace(); } } responseString = sb.toString(); Log.i(TAG, "Response: " + responseString); } JSONTokener tokener = new JSONTokener(responseString); Object o; while (tokener.more()) { o = tokener.nextValue(); if (o instanceof JSONArray) { JSONArray result = (JSONArray) o; parseJSON(result); } else { // tv.setText("Cannot parse response from server; not a JSON Object"); } } // tv.setText(reply); } catch (ClientProtocolException e) { // TODO Auto-generated catch block Log.e(TAG, "Client Protocol Exception:"); e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block Log.e(TAG, "IO Exception:"); e.printStackTrace(); } }