0

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

我想我有2个问题:

就正确处理/关闭对象而言,代码是否正确?鉴于我使用的是 asp.net 4.0,这是编写 httppost 的最有效方式吗?

提前致谢

4

1 回答 1

1

就正确处理/关闭对象而言,代码是否正确?

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

更好的方法:

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

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

鉴于我使用的是 asp.net 4.0,这是编写 httppost 的最有效方式吗?

不。

  • 使用WebClient更少的代码。见这里
  • 使用异步方法来提高性能(使用 C# 5 更容易)
于 2013-05-04T16:51:11.210 回答