强制功能参数值

本文关键字:参数 功能 | 更新日期: 2023-09-27 18:13:12

我有以下函数,它发出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框架

强制功能参数值

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

枚举如何:

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对象,这可能导致泄漏和各种讨厌的东西。例如,如果不处理响应对象,则如果多次调用此方法可能会导致超时。