namespace System.Net
{
-#if MOONLIGHT
- internal abstract class WebRequest : ISerializable {
-#else
[Serializable]
public abstract class WebRequest : MarshalByRefObject, ISerializable {
-#endif
static HybridDictionary prefixes = new HybridDictionary ();
static bool isDefaultWebProxySet;
static IWebProxy defaultWebProxy;
static RequestCachePolicy defaultCachePolicy;
- static MethodInfo cfGetDefaultProxy;
-
- // Constructors
-
+
static WebRequest ()
{
- if (Platform.IsMacOS) {
-#if MONOTOUCH
- Type type = Type.GetType ("MonoTouch.CoreFoundation.CFNetwork, monotouch");
-#else
- Type type = Type.GetType ("MonoMac.CoreFoundation.CFNetwork, monomac");
-#endif
- if (type != null)
- cfGetDefaultProxy = type.GetMethod ("GetDefaultProxy");
- }
-
-#if NET_2_1
+#if MOBILE
IWebRequestCreate http = new HttpRequestCreator ();
RegisterPrefix ("http", http);
RegisterPrefix ("https", http);
- #if MOBILE
RegisterPrefix ("file", new FileWebRequestCreator ());
RegisterPrefix ("ftp", new FtpRequestCreator ());
- #endif
#else
- defaultCachePolicy = new HttpRequestCachePolicy (HttpRequestCacheLevel.NoCacheNoStore);
#if CONFIGURATION_DEP
object cfg = ConfigurationManager.GetSection ("system.net/webRequestModules");
WebRequestModulesSection s = cfg as WebRequestModulesSection;
authentication_level = value;
}
}
-
- [MonoTODO ("Implement the caching system. Currently always returns a policy with the NoCacheNoStore level")]
- public virtual RequestCachePolicy CachePolicy
- {
- get { return DefaultCachePolicy; }
- set {
- }
- }
public virtual string ConnectionGroupName {
get { throw GetMustImplement (); }
set { throw GetMustImplement (); }
}
- public static RequestCachePolicy DefaultCachePolicy
+ [MonoTODO ("Implement the caching system. Currently always returns a policy with the NoCacheNoStore level")]
+ public virtual RequestCachePolicy CachePolicy
{
- get { return defaultCachePolicy; }
+ get { return DefaultCachePolicy; }
+ set {
+ }
+ }
+
+ public static RequestCachePolicy DefaultCachePolicy {
+ get {
+ return defaultCachePolicy ?? (defaultCachePolicy = new HttpRequestCachePolicy (HttpRequestCacheLevel.NoCacheNoStore));
+ }
set {
throw GetMustImplement ();
}
set { throw GetMustImplement (); }
}
-#if !MOONLIGHT
- public TokenImpersonationLevel ImpersonationLevel {
- get { throw GetMustImplement (); }
- set { throw GetMustImplement (); }
- }
-#endif
+
public virtual string Method {
get { throw GetMustImplement (); }
set { throw GetMustImplement (); }
throw GetMustImplement ();
}
}
-
+
+ public TokenImpersonationLevel ImpersonationLevel { get; set; }
+
// volatile static IWebProxy proxy;
static readonly object lockobj = new object ();
ProxyElement pe = sec.Proxy;
- if ((pe.UseSystemDefault != ProxyElement.UseSystemDefaultValues.False) && (pe.ProxyAddress == null))
- p = (WebProxy) GetSystemWebProxy ();
- else
+ if ((pe.UseSystemDefault != ProxyElement.UseSystemDefaultValues.False) && (pe.ProxyAddress == null)) {
+ IWebProxy proxy = GetSystemWebProxy ();
+
+ if (!(proxy is WebProxy))
+ return proxy;
+
+ p = (WebProxy) proxy;
+ } else
p = new WebProxy ();
if (pe.ProxyAddress != null)
throw new ArgumentNullException ("requestUri");
return GetCreator (requestUri.Scheme).Create (requestUri);
}
-
+#if NET_4_0
+ [MonoTODO ("for portable library support")]
+ public static HttpWebRequest CreateHttp (string requestUriString)
+ {
+ throw new NotImplementedException ();
+ }
+
+ [MonoTODO ("for portable library support")]
+ public static HttpWebRequest CreateHttp (Uri requestUri)
+ {
+ throw new NotImplementedException ();
+ }
+#endif
public virtual Stream EndGetRequestStream (IAsyncResult asyncResult)
{
throw GetMustImplement ();
[MonoTODO("Look in other places for proxy config info")]
public static IWebProxy GetSystemWebProxy ()
{
+#if MONOTOUCH
+ return CFNetwork.GetDefaultProxy ();
+#else
+#if MONODROID
+ // Return the system web proxy. This only works for ICS+.
+ var androidProxy = AndroidPlatform.GetDefaultProxy ();
+ if (androidProxy != null)
+ return androidProxy;
+#endif
#if !NET_2_1
if (IsWindows ()) {
int iProxyEnable = (int)Microsoft.Win32.Registry.GetValue ("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings", "ProxyEnable", 0);
if (iProxyEnable > 0) {
- string strHttpProxy = "";
- string[] bypassList = null;
+ string strHttpProxy = "";
bool bBypassOnLocal = false;
+ ArrayList al = new ArrayList ();
string strProxyServer = (string)Microsoft.Win32.Registry.GetValue ("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings", "ProxyServer", null);
string strProxyOverrride = (string)Microsoft.Win32.Registry.GetValue ("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings", "ProxyOverride", null);
}
} else strHttpProxy = strProxyServer;
- if (strProxyOverrride != null)
- bypassList = strProxyOverrride.Split (new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
-
- ArrayList al = new ArrayList ();
+ if (strProxyOverrride != null) {
+ string[] bypassList = strProxyOverrride.Split (new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
- foreach (string str in bypassList) {
- if (str != "<local>")al.Add (str);
- else bBypassOnLocal = true;
+ foreach (string str in bypassList) {
+ if (str != "<local>")
+ al.Add (str);
+ else
+ bBypassOnLocal = true;
+ }
}
return new WebProxy (strHttpProxy, bBypassOnLocal, al.ToArray (typeof(string)) as string[]);
}
} else {
#endif
+ if (Platform.IsMacOS)
+ return CFNetwork.GetDefaultProxy ();
+
string address = Environment.GetEnvironmentVariable ("http_proxy");
if (address == null)
}
}
- bool bBypassOnLocal = false;
- string[] bypassList = null;
+ bool bBypassOnLocal = false;
ArrayList al = new ArrayList ();
string bypass = Environment.GetEnvironmentVariable ("no_proxy");
if (bypass == null)
bypass = Environment.GetEnvironmentVariable ("NO_PROXY");
- bypassList = bypass.Split (new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
+ if (bypass != null) {
+ string[] bypassList = bypass.Split (new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
- foreach (string str in bypassList) {
- if (str != "*.local")al.Add (str);
- else bBypassOnLocal = true;
+ foreach (string str in bypassList) {
+ if (str != "*.local")
+ al.Add (str);
+ else
+ bBypassOnLocal = true;
+ }
}
return new WebProxy (uri, bBypassOnLocal, al.ToArray (typeof(string)) as string[]);
}
#endif
- if (cfGetDefaultProxy != null)
- return (IWebProxy) cfGetDefaultProxy.Invoke (null, null);
-
return new WebProxy ();
+#endif // MONOTOUCH
}
void ISerializable.GetObjectData (SerializationInfo serializationInfo, StreamingContext streamingContext)