我有以下函数发出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框架
答案 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对象。例如,如果您不处理响应对象,则多次调用此方法可能会导致超时。