using System;
using System.IO;
+using System.Reflection;
namespace System.Net {
public abstract IAsyncResult BeginGetResponse (AsyncCallback callback, object state);
public abstract Stream EndGetRequestStream (IAsyncResult asyncResult);
public abstract WebResponse EndGetResponse (IAsyncResult asyncResult);
- internal abstract Stream GetRequestStream ();
- internal abstract WebResponse GetResponse ();
public static WebRequest Create (Uri uri)
{
- if (!uri.Scheme.StartsWith ("http"))
+ if (uri.IsAbsoluteUri && !uri.Scheme.StartsWith ("http"))
throw new NotSupportedException (string.Format ("Scheme {0} not supported", uri.Scheme));
return CreateBrowserHttpRequest (uri);
static Type GetBrowserHttpFromMoonlight ()
{
- var type = System.Reflection.Assembly.Load ("System.Windows.Browser, Version=2.0.5.0, Culture=Neutral, PublicKeyToken=7cec85d7bea7798e").GetType ("System.Windows.Browser.Net.BrowserHttpWebRequest");
+ var assembly = Assembly.Load ("System.Windows.Browser, Version=2.0.5.0, Culture=Neutral, PublicKeyToken=7cec85d7bea7798e");
+ if (assembly == null)
+ throw new InvalidOperationException ("Can not load System.Windows.Browser");
+
+ var type = assembly.GetType ("System.Windows.Browser.Net.BrowserHttpWebRequest");
if (type == null)
- throw new NotSupportedException ("Can not get BrowserHttpWebRequest");
+ throw new InvalidOperationException ("Can not get BrowserHttpWebRequest");
return type;
}
{
throw new NotSupportedException ();
}
+
+ internal void SetupProgressDelegate (Delegate progress_delegate)
+ {
+ if (browser_http_request == null)
+ browser_http_request = GetBrowserHttpFromMoonlight ();
+
+ this.GetType ().GetField ("progress_delegate", BindingFlags.Instance | BindingFlags.NonPublic).SetValue (this, progress_delegate);
+ }
+
}
}