2014-07-02 31 views
9

我曾在一个asp.net的WebAPI控制器下列行动:谈到HttpWebResponse到HttpResponseMessage

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 ???; 
} 

我怎么能转换HttpWebResponse成HttpResponseMessage?

+1

看到这个对方回答:http://stackoverflow.com/a/11125737/507793 – Matthew

回答

4

在HttpResponseMessage改造HttpWebResponse的最好方法是创建一个新的HttpResponseMessage:

 var response = new HttpResponseMessage(HttpStatusCode.OK); 

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

那么,那些人的部分标题responseApi?有没有必要保留这些?有没有一种通用的方式来处理所有内容类型,而不是硬编码到application/json? – NStuke