使用流写器的正确方法是什么?steamreader

本文关键字:方法 是什么 steamreader | 更新日期: 2023-09-27 18:12:03

我进入了未知的领域-我必须第一次创建一个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;
    }

我想我有两个问题:

代码在正确处理/关闭对象方面是否正确?这是最有效的方式来写我的httppost给我使用asp.net 4.0?

Thanks in advance

使用流写器的正确方法是什么?steamreader

代码在正确处理/关闭对象方面是否正确?

。您正在正确关闭流,但没有关闭Reader和Writer对象。如果有任何类型的缓冲,这里可能会丢失数据。

更好的方法:

   using (var reqStream = req.GetRequestStream())       
   using (var writer = new StreamWriter(reqStream))
   {
      writer.WriteLine(postValues);
   }

Reader也是如此。注意,这是嵌套2个using块,缩进有点不典型,但很实用。

这是写我的httppost给我使用asp.net 4.0最有效的方式吗?

  • 使用WebClient代码较少。看到这里。
  • 使用异步方法来提高性能(在c# 5中更容易)