什么是使用streamwriter和steamreader的正确方法?
问题描述:
我进入了未知领域 - 我必须首次创建一个httppost(xml)。我已经看过很多例子,但坦率地说,它有点混淆为小白。什么是使用streamwriter和steamreader的正确方法?
我目前工作的功能是这样的:
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;
}
我想我有2个问题:
请问代码的正确处置/关对象条件似乎正确的呢? 这是我使用asp.net 4.0编写我的httppost最有效的方法吗?
在此先感谢
答
请问代码的正确处置/关对象条件似乎正确的呢?
不是。您正在关闭流,但不是读写器对象。如果出现任何类型的缓冲,您可能会在此丢失数据。
更好的方法:
using (var reqStream = req.GetRequestStream())
using (var writer = new StreamWriter(reqStream))
{
writer.WriteLine(postValues);
}
与同为读者。请注意,这是嵌套块,缩进略微非典型但实用。
这是写我的httppost给我使用asp.net 4.0最有效的方式?
号
- 使用
WebClient
为更少的代码。见here。 - 使用异步方法更高的性能(更容易使用C#5很多)
谢谢您的回答亨克。我更新了我的答案,然后看到了你的榜样 - 这很好。我已经看过使用WebClient的例子,但不知道如何修改内容类型等。 – dotnetnoob 2013-05-04 17:00:34
请按照我的答案中的链接。 – 2013-05-04 17:02:19
谢谢亨克,我会试试看。 – dotnetnoob 2013-05-04 17:08:41