我有这个类,我可以使用不同的Request方法(GET,POST等)向不同的路径发出请求。
我刚刚添加try
和catch
来记录错误,但是我不知道如何处理catch块?我无法返回一个空的HttpWebResponse。 "Not intended to be used directly from the code"
private static HttpWebResponse HttpRequest(string method, string path)
{
try
{
var httpWebRequest =
(HttpWebRequest) WebRequest.Create(ConfigurationManager.AppSettings["server"] + path);
httpWebRequest.ContentType = "application/json";
httpWebRequest.Method = method;
httpWebRequest.Credentials =
new NetworkCredential(ConfigurationManager.AppSettings["username"],
ConfigurationManager.AppSettings["password"]);
httpWebRequest.PreAuthenticate = true;
return (HttpWebResponse) httpWebRequest.GetResponse();
}
catch (Exception e)
{
Logger.Error(e, "HttpRequest error");
}
}
有什么想法吗?
答案 0 :(得分:2)
相反,您可以返回HttpResponseMessage
,并在catch (Exception ex)
返回类似这样的内容:
var response = new HttpResponseMessage(HttpStatusCode.InternalServerError)
{
Content = new StringContent(string.Join(
Environment.NewLine,
ex.GetType().FullName,
ex.Message))
};
response.Content.Headers.ContentType = new MediaTypeHeaderValue("text/plain");
return response;
(设置ContentType
和Content
以符合您的目的)
答案 1 :(得分:1)
你可以重新抛出错误,将责任推到链上。
catch (Exception e)
{
Logger.Error(e, "HttpRequest error");
throw;
}
或者您可以返回null
catch (Exception e)
{
Logger.Error(e, "HttpRequest error");
return null;
}
答案 2 :(得分:1)
不要抓住一般Exception
- 而是抓住可能包含WebException
的{{1}}。否则,只需在记录后重新抛出错误。
Response