2011-04-06 46 views
1

服務器發送500錯誤時,我如何獲得responseText我打電話給json web服務發送錯誤消息,通過將StatusCode設置爲500,然後發送錯誤消息作爲響應文本(例如作爲{「消息」:「InvalidUserName」})。當WebRequest.Create(URL).GetResponse()

問題是,如果Web服務發送的StatusCode 500

try 
{ 
    WebRequest request = WebRequest.Create(URL); 
    request.Method = "POST"; 
    request.ContentType = "application/json; charset=utf-8"; 

    HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
    StreamReader streamReader = new StreamReader(response.GetResponseStream(), Encoding.UTF8); 
    string result = streamReader.ReadToEnd(); 
    streamReader.Close(); 
    response.Close(); 

    return result; 
} 
catch (Exception e) 
{ 
    // If web service sends 500 error code then we end up here. 
    // But there is no way to get response text :-(
} 

有沒有辦法解決這個問題的方式ASP.NET不給我響應文本?另外:我正在控制網絡服務,所以它可能是做一些改變他們的解決方案。 (注意:我需要使用普通WebRequest的東西來調用服務 - 在這種情況下,它不會與其他方法一起使用,例如添加爲WebReference等)

任何想法?

回答

0

代替WebException。它有一個包含響應的Response屬性。使用前務必檢查是否爲空。