\r
namespace System.Net\r
{\r
- \r
[Serializable]\r
public class HttpWebResponse : WebResponse, IDisposable\r
{\r
{\r
get\r
{\r
- string contentType = ContentType;
- if (contentType == null)
- return "ISO-8859-1";
- string val = contentType.ToLower ();
- int pos = val.IndexOf ("charset=");
- if (pos == -1)
- return "ISO-8859-1";
- pos += 8;
- int pos2 = val.IndexOf (';', pos);
- return (pos2 == -1)
- ? contentType.Substring (pos)
+ string contentType = ContentType;\r
+ if (contentType == null)\r
+ return "ISO-8859-1";\r
+ int pos = contentType.IndexOf ("charset=", StringComparison.OrdinalIgnoreCase);\r
+ if (pos == -1)\r
+ return "ISO-8859-1";\r
+ pos += 8;\r
+ int pos2 = contentType.IndexOf (';', pos);\r
+ return (pos2 == -1)\r
+ ? contentType.Substring (pos) \r
: contentType.Substring (pos, pos2 - pos);\r
}\r
}\r
else\r
_version = null;\r
}\r
- \r
- private void FillCookies()
- {
- if(_state == null)
- return;
-
- mainsoft.apache.commons.httpclient.Cookie[] javaCookies =
- _state.getCookies();
-
- if(javaCookies == null)
- return;
-
- for(int i = 0; i < javaCookies.Length; i++)
- {
- bool httpsProtocol = _httpMethod.getURI().ToString().StartsWith("https");
- if(!httpsProtocol && javaCookies[i].getSecure())
- continue;
- Cookie c = new Cookie(javaCookies[i].getName(),
- javaCookies[i].getValue(),
- (javaCookies[i].getPath() == null) ? "" : javaCookies[i].getPath(),
- (javaCookies[i].getDomain() == null) ? "" : javaCookies[i].getDomain());
- java.util.Calendar jCalendar = java.util.Calendar.getInstance();
- java.util.Date jDate = javaCookies[i].getExpiryDate();
- if(jDate != null)
- {
- jCalendar.setTime(javaCookies[i].getExpiryDate());
- c.Expires = (DateTime) vmw.common.DateTimeUtils.CalendarToDateTime(jCalendar);
- }
-
- _cookies.Add(c);
- }
-
- }
-
- //todo remove unused methods
- private void FillCookies_old ()
- {
-
- string val = Headers["Set-Cookie"];
- if (val != null && val.Trim () != "")
- SetCookie (val);
-
- val = Headers["Set-Cookie2"];
- if (val != null && val.Trim () != "")
- SetCookie2 (val);
+\r
+ private mainsoft.apache.commons.httpclient.Cookie FindCookie (mainsoft.apache.commons.httpclient.Cookie [] cookies, string name) {\r
+ for (int i = 0; i < cookies.Length; ++i)\r
+ if (cookies [i].getName () == name)\r
+ return cookies [i];\r
+ return null;\r
+ }\r
+\r
+ private mainsoft.apache.commons.httpclient.Cookie [] FetchResponseCookies (mainsoft.apache.commons.httpclient.Header [] headers,\r
+ mainsoft.apache.commons.httpclient.Cookie [] stateCookies) {\r
+ System.Collections.ArrayList list = new System.Collections.ArrayList();\r
+ foreach (mainsoft.apache.commons.httpclient.Header h in headers) {\r
+ foreach (mainsoft.apache.commons.httpclient.HeaderElement element in h.getValues ()) {\r
+ mainsoft.apache.commons.httpclient.Cookie c = FindCookie (stateCookies, element.getName ());\r
+ if (c != null)\r
+ list.Add(c);\r
+ }\r
+ }\r
+\r
+ return (mainsoft.apache.commons.httpclient.Cookie[]) list.ToArray(typeof(mainsoft.apache.commons.httpclient.Cookie));\r
+ }\r
+\r
+ private void FillCookies ()\r
+ {\r
+ if(_state == null)\r
+ return;\r
+\r
+ mainsoft.apache.commons.httpclient.Cookie[] javaCookies =\r
+ _state.getCookies();\r
+\r
+ if(javaCookies == null)\r
+ return;\r
+\r
+ mainsoft.apache.commons.httpclient.Header [] headers = _httpMethod.getResponseHeaders ("Set-Cookie");\r
+ if (headers != null)\r
+ javaCookies = FetchResponseCookies (headers, javaCookies); \r
+\r
+ for(int i = 0; i < javaCookies.Length; i++)\r
+ {\r
+ bool httpsProtocol = _httpMethod.getURI().ToString().StartsWith("https");\r
+ if(!httpsProtocol && javaCookies[i].getSecure())\r
+ continue;\r
+ Cookie c = new Cookie(javaCookies[i].getName(), \r
+ javaCookies[i].getValue(), \r
+ (javaCookies[i].getPath() == null) ? "" : javaCookies[i].getPath(),\r
+ (javaCookies[i].getDomain() == null) ? "" : javaCookies[i].getDomain());\r
+ java.util.Calendar jCalendar = java.util.Calendar.getInstance();\r
+ java.util.Date jDate = javaCookies[i].getExpiryDate();\r
+ if(jDate != null)\r
+ {\r
+ jCalendar.setTime(javaCookies[i].getExpiryDate());\r
+ c.Expires = (DateTime) vmw.common.DateTimeUtils.CalendarToDateTime(jCalendar);\r
+ }\r
+ \r
+ _cookies.Add(c);\r
+ }\r
+\r
+ }\r
+\r
+ //todo remove unused methods\r
+ private void FillCookies_old ()\r
+ {\r
+ \r
+ string val = Headers["Set-Cookie"];\r
+ if (val != null && val.Trim () != "")\r
+ SetCookie (val);\r
+\r
+ val = Headers["Set-Cookie2"];\r
+ if (val != null && val.Trim () != "")\r
+ SetCookie2 (val);\r
}\r
\r
- static string [] SplitValue (string input)
- {
- string [] result = new string [2];
- int eq = input.IndexOf ('=');
+ static string [] SplitValue (string input)\r
+ {\r
+ string [] result = new string [2];\r
+ int eq = input.IndexOf ('=');\r
if (eq == -1) \r
- {
- result [0] = "invalid";
+ {\r
+ result [0] = "invalid";\r
} \r
else \r
- {
- result [0] = input.Substring (0, eq).Trim ().ToUpper ();
- result [1] = input.Substring (eq + 1);
- }
-
- return result;
+ {\r
+ result [0] = input.Substring (0, eq).Trim ().ToUpper ();\r
+ result [1] = input.Substring (eq + 1);\r
+ }\r
+ \r
+ return result;\r
}\r
\r
private void SetCookie(string val)\r
{\r
-// Console.WriteLine("in set cookie 1 - got value : " + val);
- string[] parts = null;
- Collections.Queue options = null;
- Cookie cookie = null;
-
- options = new Collections.Queue (val.Split (';'));
- parts = SplitValue ((string) options.Dequeue()); // NAME=VALUE must be first
-
- cookie = new Cookie (parts[0], parts[1]);
-
+// Console.WriteLine("in set cookie 1 - got value : " + val);\r
+ string[] parts = null;\r
+ Collections.Queue options = null;\r
+ Cookie cookie = null;\r
+\r
+ options = new Collections.Queue (val.Split (';'));\r
+ parts = SplitValue ((string) options.Dequeue()); // NAME=VALUE must be first\r
+\r
+ cookie = new Cookie (parts[0], parts[1]);\r
+\r
while (options.Count > 0) \r
- {
- parts = SplitValue ((string) options.Dequeue());
+ {\r
+ parts = SplitValue ((string) options.Dequeue());\r
switch (parts [0]) \r
- {
- case "COMMENT":
- if (cookie.Comment == null)
- cookie.Comment = parts[1];
- break;
- case "COMMENTURL":
- if (cookie.CommentUri == null)
- cookie.CommentUri = new Uri(parts[1]);
- break;
- case "DISCARD":
- cookie.Discard = true;
- break;
- case "DOMAIN":
- if (cookie.Domain == "")
- cookie.Domain = parts[1];
- break;
- case "MAX-AGE": // RFC Style Set-Cookie2
- if (cookie.Expires == DateTime.MinValue)
- cookie.Expires = cookie.TimeStamp.AddSeconds (Int32.Parse (parts[1]));
- break;
- case "EXPIRES": // Netscape Style Set-Cookie
+ {\r
+ case "COMMENT":\r
+ if (cookie.Comment == null)\r
+ cookie.Comment = parts[1];\r
+ break;\r
+ case "COMMENTURL":\r
+ if (cookie.CommentUri == null)\r
+ cookie.CommentUri = new Uri(parts[1]);\r
+ break;\r
+ case "DISCARD":\r
+ cookie.Discard = true;\r
+ break;\r
+ case "DOMAIN":\r
+ if (cookie.Domain == "")\r
+ cookie.Domain = parts[1];\r
+ break;\r
+ case "MAX-AGE": // RFC Style Set-Cookie2\r
+ if (cookie.Expires == DateTime.MinValue)\r
+ cookie.Expires = cookie.TimeStamp.AddSeconds (Int32.Parse (parts[1]));\r
+ break;\r
+ case "EXPIRES": // Netscape Style Set-Cookie\r
if (cookie.Expires == DateTime.MinValue) \r
- {
- //FIXME: Does DateTime parse something like: "Sun, 17-Jan-2038 19:14:07 GMT"?
- //cookie.Expires = DateTime.ParseExact (parts[1]);
- cookie.Expires = DateTime.Now.AddDays (1);
- }
- break;
- case "PATH":
- cookie.Path = parts[1];
- break;
- case "PORT":
- if (cookie.Port == null)
- cookie.Port = parts[1];
- break;
- case "SECURE":
- cookie.Secure = true;
- break;
- case "VERSION":
- cookie.Version = Int32.Parse (parts[1]);
- break;
- } // switch
- } // while
-
- if (_cookies == null)
- _cookies = new CookieCollection();
-
- if (cookie.Domain == "")
- cookie.Domain = _uri.Host;
-
-// Console.WriteLine("adding cookie " + cookie + " to collection");
- _cookies.Add (cookie);
-// Console.WriteLine("exit from method...");
+ {\r
+ //FIXME: Does DateTime parse something like: "Sun, 17-Jan-2038 19:14:07 GMT"?\r
+ //cookie.Expires = DateTime.ParseExact (parts[1]);\r
+ cookie.Expires = DateTime.Now.AddDays (1);\r
+ }\r
+ break;\r
+ case "PATH":\r
+ cookie.Path = parts[1];\r
+ break;\r
+ case "PORT":\r
+ if (cookie.Port == null)\r
+ cookie.Port = parts[1];\r
+ break;\r
+ case "SECURE":\r
+ cookie.Secure = true;\r
+ break;\r
+ case "VERSION":\r
+ cookie.Version = Int32.Parse (parts[1]);\r
+ break;\r
+ } // switch\r
+ } // while\r
+\r
+ if (_cookies == null)\r
+ _cookies = new CookieCollection();\r
+\r
+ if (cookie.Domain == "")\r
+ cookie.Domain = _uri.Host;\r
+\r
+// Console.WriteLine("adding cookie " + cookie + " to collection");\r
+ _cookies.Add (cookie);\r
+// Console.WriteLine("exit from method...");\r
} \r
\r
- private void SetCookie2 (string cookies_str)
- {
- string [] cookies = cookies_str.Split (',');
- foreach (string cookie_str in cookies)
- SetCookie (cookie_str);
+ private void SetCookie2 (string cookies_str)\r
+ {\r
+ string [] cookies = cookies_str.Split (',');\r
+ foreach (string cookie_str in cookies)\r
+ SetCookie (cookie_str);\r
}\r
#endregion\r
-\r
}\r
-\r
}\r
-\r
-\r