diff --git a/src/Twilio/Http/Net35/WebRequestClient.cs b/src/Twilio/Http/Net35/WebRequestClient.cs
index 5d3b35b2c..c7fd951dc 100644
--- a/src/Twilio/Http/Net35/WebRequestClient.cs
+++ b/src/Twilio/Http/Net35/WebRequestClient.cs
@@ -37,7 +37,7 @@ public override Response MakeRequest(Request request)
{
IHttpWebResponseWrapper response = httpRequest.GetResponse();
string content = GetResponseContent(response);
- this.LastResponse = new Response(response.StatusCode, content);
+ this.LastResponse = new Response(response.StatusCode, content, response.Headers);
}
catch (WebExceptionWrapper e)
{
@@ -48,7 +48,7 @@ public override Response MakeRequest(Request request)
}
// Non 2XX status code
IHttpWebResponseWrapper errorResponse = e.Response;
- this.LastResponse = new Response(errorResponse.StatusCode, GetResponseContent(errorResponse));
+ this.LastResponse = new Response(errorResponse.StatusCode, GetResponseContent(errorResponse), errorResponse.Headers);
}
return this.LastResponse;
}
diff --git a/src/Twilio/Http/Net35/WebRequestWrappers.cs b/src/Twilio/Http/Net35/WebRequestWrappers.cs
index 09471b002..a335fb699 100644
--- a/src/Twilio/Http/Net35/WebRequestWrappers.cs
+++ b/src/Twilio/Http/Net35/WebRequestWrappers.cs
@@ -35,6 +35,7 @@ public interface IHttpWebResponseWrapper
{
HttpStatusCode StatusCode { get; set; }
Stream GetResponseStream();
+ WebHeaderCollection Headers { get; }
}
public class HttpWebRequestWrapper : IHttpWebRequestWrapper
@@ -125,6 +126,11 @@ public Stream GetResponseStream()
{
return this._httpWebResponse.GetResponseStream();
}
+
+ public WebHeaderCollection Headers
+ {
+ get { return this._httpWebResponse.Headers; }
+ }
}
public class WebExceptionWrapper : Exception
diff --git a/src/Twilio/Http/Response.cs b/src/Twilio/Http/Response.cs
index 498b4b516..4e19fef1e 100644
--- a/src/Twilio/Http/Response.cs
+++ b/src/Twilio/Http/Response.cs
@@ -1,5 +1,11 @@
using System.Net;
+#if NET35
+using Headers = System.Net.WebHeaderCollection;
+#else
+using Headers = System.Net.Http.Headers.HttpResponseHeaders;
+#endif
+
namespace Twilio.Http
{
///
@@ -18,14 +24,21 @@ public class Response
public string Content { get; }
///
- /// Create a new Response
+ /// Headers
+ ///
+ public Headers Headers { get; }
+
+ ///
+ /// Create a new Response
///
/// HTTP status code
/// Content string
- public Response (HttpStatusCode statusCode, string content)
+ /// Headers
+ public Response(HttpStatusCode statusCode, string content, Headers headers = null)
{
StatusCode = statusCode;
Content = content;
+ Headers = headers;
}
}
}
diff --git a/src/Twilio/Http/SystemNetHttpClient.cs b/src/Twilio/Http/SystemNetHttpClient.cs
index d5bda5c97..b6d253742 100644
--- a/src/Twilio/Http/SystemNetHttpClient.cs
+++ b/src/Twilio/Http/SystemNetHttpClient.cs
@@ -13,11 +13,11 @@ namespace Twilio.Http
///
public class SystemNetHttpClient : HttpClient
{
- #if NET451
+#if NET451
private string PlatVersion = " (.NET Framework 4.5.1+)";
- #else
+#else
private string PlatVersion = $" ({RuntimeInformation.FrameworkDescription})";
- #endif
+#endif
private readonly System.Net.Http.HttpClient _httpClient;
@@ -73,7 +73,7 @@ public override async Task MakeRequestAsync(Request request)
// Create and return a new Response. Keep a reference to the last
// response for debugging, but don't return it as it may be shared
// among threads.
- var response = new Response(httpResponse.StatusCode, await reader.ReadToEndAsync().ConfigureAwait(false));
+ var response = new Response(httpResponse.StatusCode, await reader.ReadToEndAsync().ConfigureAwait(false), httpResponse.Headers);
this.LastResponse = response;
return response;
}