我正处于未知领域 - 我必须首次创建一个httppost(xml)。我看了很多例子,但坦率地说,它对于一个菜鸟来说有点令人困惑。
我目前正在处理的功能是:
public string SubmitRequest(string postUrl, string contentType, string postValues)
{
var req = WebRequest.Create(postUrl);
req.Method = "POST";
req.ContentType = contentType;
try
{
using (var reqStream = req.GetRequestStream())
using (var writer = new StreamWriter(reqStream))
{
writer.WriteLine(postValues);
}
var resp = req.GetResponse();
using (var respStream = resp.GetResponseStream())
using (var reader = new StreamReader(respStream))
{
return reader.ReadToEnd().Trim();
}
}
catch(WebException ex)
{
// do something here
}
return string.Empty;
}
我想我有两个问题:
在正确处理/关闭对象方面,代码是否正确? 鉴于我使用的是asp.net 4.0,这是编写我的httppost最有效的方法吗?
提前致谢
答案 0 :(得分:1)
在正确处理/关闭对象方面,代码看起来是否正确?
没有。您正在关闭流,但不是Reader和Writer对象。如果正在进行任何类型的缓冲,您可能会丢失数据。
更好的方法:
using (var reqStream = req.GetRequestStream())
using (var writer = new StreamWriter(reqStream))
{
writer.WriteLine(postValues);
}
读者也一样。请注意,这是嵌套2 using
块,缩进稍微不典型但实用。
鉴于我使用的是asp.net 4.0,这是编写我的httppost最有效的方式吗?
没有。
WebClient
代码更少。见here。