C# 使用streamwriter&;的正确方法是什么;蒸汽阅读器?
我进入了一个未知的领域——我必须第一次创建一个httppost(xml)。我看过很多例子,但坦率地说,这对一个noob来说有点让人困惑 我目前正在处理的功能是:C# 使用streamwriter&;的正确方法是什么;蒸汽阅读器?,c#,asp.net,http-post,streamreader,streamwriter,C#,Asp.net,Http Post,Streamreader,Streamwriter,我进入了一个未知的领域——我必须第一次创建一个httppost(xml)。我看过很多例子,但坦率地说,这对一个noob来说有点让人困惑 我目前正在处理的功能是: public string SubmitRequest(string postUrl, string contentType, string postValues) { var req = WebRequest.Create(postUrl); req.Method = "POST";
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最有效的方法吗
提前谢谢
代码在正确处理/关闭对象方面是否正确
否。您正在正确关闭流,但没有关闭读写器对象。如果正在进行任何类型的缓冲,您可能会在此处丢失数据
更好的方法是:
using (var reqStream = req.GetRequestStream())
using (var writer = new StreamWriter(reqStream))
{
writer.WriteLine(postValues);
}
读者也是如此。请注意,这是使用块嵌套2,缩进有点非典型,但很实用
鉴于我使用的是asp.net 4.0,这是编写httppost最有效的方法吗
没有
- 使用
WebClient
获取更少的代码。看
- 使用异步方法提高性能(使用C#5更容易)
谢谢你的回答,亨克。我更新了我的答案,然后看到了你的例子——这很好。我已经看过使用WebClient的示例,但无法解决如何修改内容类型等问题。请按照我答案中的链接进行操作。谢谢Henk,我将尝试一下。