强制功能参数值

时间:2013-05-11 18:18:28

标签: c#

我有以下函数发出HTTP请求并以字符串形式返回响应正文:

private string getResponseBody(string method, string partialUrl)
{
    HttpWebRequest req = (HttpWebRequest)WebRequest.Create(_hostPath + partialUrl);
    req.ContentLength = 0;
    req.KeepAlive = false;
    req.Method = method;

    return new StreamReader(req.GetResponse().GetResponseStream()).ReadToEnd();
}

第一个参数method只能将常规HTTP方法作为值(GET,POST,PUT,DELETE)。

要强制输入为这些值之一,我知道我需要创建一个对象,但细节正在逃避我。任何人都可以帮忙吗?

PS:我正在使用4.0框架

1 个答案:

答案 0 :(得分:4)

  

要强制输入为这些值之一,我知道我需要创建一个对象,

枚举如何:

public enum HttpMethod
{
    GET, 
    POST, 
    PUT, 
    DELETE
}

然后:

private string getResponseBody(HttpMethod method, string partialUrl)
{
    HttpWebRequest req = (HttpWebRequest)WebRequest.Create(_hostPath + partialUrl);
    req.ContentLength = 0;
    req.KeepAlive = false;
    req.Method = method.ToString();

    using (var response = req.GetResponse())
    using (var stream = response.GetResponseStream())
    using (var reader = new StreamReader(stream))
    {
        return reader.ReadToEnd();
    }
}

还要注意我是如何解决你在GetResponse代码中修复的缺陷,你没有处理任何可能导致泄漏和各种令人讨厌的东西的IDisposable对象。例如,如果您不处理响应对象,则多次调用此方法可能会导致超时。