diff --git a/src/Mono.Android/Xamarin.Android.Net/AndroidClientHandler.cs b/src/Mono.Android/Xamarin.Android.Net/AndroidClientHandler.cs
index 8e98b393f0c..d9dfc279178 100644
--- a/src/Mono.Android/Xamarin.Android.Net/AndroidClientHandler.cs
+++ b/src/Mono.Android/Xamarin.Android.Net/AndroidClientHandler.cs
@@ -168,7 +168,7 @@ protected void AssertSelf ()
/// Task in which the request is executed
/// Request provided by
/// Cancellation token.
- protected override Task SendAsync (HttpRequestMessage request, CancellationToken cancellationToken)
+ protected override async Task SendAsync (HttpRequestMessage request, CancellationToken cancellationToken)
{
AssertSelf ();
if (request == null)
@@ -179,8 +179,8 @@ protected void AssertSelf ()
URL java_url = new URL (request.RequestUri.ToString ());
URLConnection java_connection = java_url.OpenConnection ();
- HttpURLConnection httpConnection = SetupRequestInternal (request, java_connection);
- return ProcessRequest (request, java_url, httpConnection, cancellationToken);
+ HttpURLConnection httpConnection = await SetupRequestInternal (request, java_connection);
+ return await ProcessRequest (request, java_url, httpConnection, cancellationToken);
}
Task ProcessRequest (HttpRequestMessage request, URL javaUrl, HttpURLConnection httpConnection, CancellationToken cancellationToken)
@@ -361,9 +361,9 @@ void CopyHeaders (HttpURLConnection httpConnection, HttpResponseMessage response
///
/// Request data
/// Pre-configured connection instance
- protected virtual void SetupRequest (HttpRequestMessage request, HttpURLConnection conn)
+ protected virtual Task SetupRequest (HttpRequestMessage request, HttpURLConnection conn)
{
- AssertSelf ();
+ return Task.Factory.StartNew (AssertSelf);
}
///
@@ -422,7 +422,7 @@ void AppendEncoding (string encoding, ref List list)
list.Add (encoding);
}
- HttpURLConnection SetupRequestInternal (HttpRequestMessage request, URLConnection conn)
+ async Task SetupRequestInternal (HttpRequestMessage request, URLConnection conn)
{
if (conn == null)
throw new ArgumentNullException (nameof (conn));
@@ -467,7 +467,7 @@ HttpURLConnection SetupRequestInternal (HttpRequestMessage request, URLConnectio
}
HandlePreAuthentication (httpConnection);
- SetupRequest (request, httpConnection);
+ await SetupRequest (request, httpConnection);
SetupRequestBody (httpConnection, request);
return httpConnection;
diff --git a/src/Mono.Android/Xamarin.Android.Net/AndroidHttpResponseMessage.cs b/src/Mono.Android/Xamarin.Android.Net/AndroidHttpResponseMessage.cs
index 43a7953ef0e..b0f202802d7 100644
--- a/src/Mono.Android/Xamarin.Android.Net/AndroidHttpResponseMessage.cs
+++ b/src/Mono.Android/Xamarin.Android.Net/AndroidHttpResponseMessage.cs
@@ -20,6 +20,9 @@ public class AndroidHttpResponseMessage : HttpResponseMessage
/// The requested authentication.
public IList RequestedAuthentication { get; internal set; }
+ public AndroidHttpResponseMessage ()
+ {}
+
public AndroidHttpResponseMessage (URL javaUrl, HttpURLConnection httpConnection) {
javaUrl = javaUrl;
httpConnection = httpConnection;