/// <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();
		}
		/// <summary>Convert a JSONObject into a cookie specification string.</summary>
		/// <remarks>
		/// Convert a JSONObject into a cookie specification string. The JSONObject
		/// must contain "name" and "value" members.
		/// If the JSONObject contains "expires", "domain", "path", or "secure"
		/// members, they will be appended to the cookie specification string.
		/// All other members are ignored.
		/// </remarks>
		/// <param name="jo">A JSONObject</param>
		/// <returns>A cookie specification string</returns>
		/// <exception cref="JSONException"/>
		/// <exception cref="org.json.JSONException"/>
		public static string ToString(org.json.JSONObject jo)
		{
			System.Text.StringBuilder sb = new System.Text.StringBuilder();
			sb.Append(Escape(jo.GetString("name")));
			sb.Append("=");
			sb.Append(Escape(jo.GetString("value")));
			if (jo.Has("expires"))
			{
				sb.Append(";expires=");
				sb.Append(jo.GetString("expires"));
			}
			if (jo.Has("domain"))
			{
				sb.Append(";domain=");
				sb.Append(Escape(jo.GetString("domain")));
			}
			if (jo.Has("path"))
			{
				sb.Append(";path=");
				sb.Append(Escape(jo.GetString("path")));
			}
			if (jo.OptBoolean("secure"))
			{
				sb.Append(";secure");
			}
			return sb.ToString();
		}