/// <summary>Convert a JSONObject into a cookie list.</summary> /// <remarks> /// Convert a JSONObject into a cookie list. A cookie list is a sequence /// of name/value pairs. The names are separated from the values by '='. /// The pairs are separated by ';'. The characters '%', '+', '=', and ';' /// in the names and values are replaced by "%hh". /// </remarks> /// <param name="jo">A JSONObject</param> /// <returns>A cookie list string</returns> /// <exception cref="JSONException"/> /// <exception cref="org.json.JSONException"/> public static string ToString(org.json.JSONObject jo) { bool b = false; System.Collections.Generic.IEnumerator<string> keys = jo.Keys(); string @string; System.Text.StringBuilder sb = new System.Text.StringBuilder(); while (keys.HasNext()) { @string = keys.Next(); if (!jo.IsNull(@string)) { if (b) { sb.Append(';'); } sb.Append(org.json.Cookie.Escape(@string)); sb.Append("="); sb.Append(org.json.Cookie.Escape(jo.GetString(@string))); b = true; } } return sb.ToString(); }
/// <summary>Convert a JSONObject into an HTTP header.</summary> /// <remarks> /// Convert a JSONObject into an HTTP header. A request header must contain /// <pre>{ /// Method: "POST" (for example), /// "Request-URI": "/" (for example), /// "HTTP-Version": "HTTP/1.1" (for example) /// }</pre> /// A response header must contain /// <pre>{ /// "HTTP-Version": "HTTP/1.1" (for example), /// "Status-Code": "200" (for example), /// "Reason-Phrase": "OK" (for example) /// }</pre> /// Any other members of the JSONObject will be output as HTTP fields. /// The result will end with two CRLF pairs. /// </remarks> /// <param name="jo">A JSONObject</param> /// <returns>An HTTP header string.</returns> /// <exception cref="JSONException"> /// if the object does not contain enough /// information. /// </exception> /// <exception cref="org.json.JSONException"/> public static string ToString(org.json.JSONObject jo) { System.Collections.Generic.IEnumerator<string> keys = jo.Keys(); string @string; System.Text.StringBuilder sb = new System.Text.StringBuilder(); if (jo.Has("Status-Code") && jo.Has("Reason-Phrase")) { sb.Append(jo.GetString("HTTP-Version")); sb.Append(' '); sb.Append(jo.GetString("Status-Code")); sb.Append(' '); sb.Append(jo.GetString("Reason-Phrase")); } else { if (jo.Has("Method") && jo.Has("Request-URI")) { sb.Append(jo.GetString("Method")); sb.Append(' '); sb.Append('"'); sb.Append(jo.GetString("Request-URI")); sb.Append('"'); sb.Append(' '); sb.Append(jo.GetString("HTTP-Version")); } else { throw new org.json.JSONException("Not enough material for an HTTP header."); } } sb.Append(CRLF); while (keys.HasNext()) { @string = keys.Next(); if (!"HTTP-Version".Equals(@string) && !"Status-Code".Equals(@string) && !"Reason-Phrase".Equals(@string) && !"Method".Equals(@string) && !"Request-URI".Equals(@string) && !jo.IsNull(@string)) { sb.Append(@string); sb.Append(": "); sb.Append(jo.GetString(@string)); sb.Append(CRLF); } } sb.Append(CRLF); return sb.ToString(); }