Turning HttpWebResponse into an HttpResponseMessage
Asked Answered
L

1

11

I have the following action in an asp.net WebAPI controller:

public HttpResponseMessage GetCBERSS(string Site, string File, string User, string Password)
{
    string URLString = string.Format("https://{0}.rss.mycompany.com/{1}", Site, File);
    Uri uri = new Uri(URLString);
    CredentialCache cache = new CredentialCache();
    cache.Add(uri, "Basic", new NetworkCredential(User, Password));
    WebRequest r = WebRequest.Create(uri);
    r.Credentials = cache;
    r.ContentType = "application/rss+xml";
    IgnoreBadCertificates();
    HttpWebResponse result = (HttpWebResponse)r.GetResponse();
    return ???;
}

How can I convert the HttpWebResponse into an HttpResponseMessage?

Lessen answered 2/7, 2014 at 18:24 Comment(1)
See this other answer: https://mcmap.net/q/167346/-how-to-return-a-file-using-web-apiUnbelief
M
5

The best way to transform HttpWebResponse in HttpResponseMessage is create a new HttpResponseMessage :

using (var responseApi = (HttpWebResponse)request.GetResponse())
{
     var response = new HttpResponseMessage(responseApi.StatusCode);                    
     using (var reader = new StreamReader(responseApi.GetResponseStream()))
     {
         var objText = reader.ReadToEnd();
         response.Content = new StringContent(objText, Encoding.UTF8, "application/json");
     }
     return response;
}

Maroney answered 20/1, 2016 at 20:20 Comment(2)
What about headers that were part of responseApi? Is there any need to keep any of those? Is there a generic way to handle this for all content types instead of hardcoding it to application/json?Yak
This is in case of a successful request (HttpStatusCode.OK). How can I parse statusCode and reasonPhrase out of a ´HttpWebResponse´ if request is unsuccessful?Alphonsa

© 2022 - 2024 — McMap. All rights reserved.