2

我正在编写一个需要对 MVC 控制器执行 POST 的控制台应用程序。我正在使用 WebClient 类来执行 POST。但是我无法理解如何将数组添加到消息正文中。

对于简单的参数,如果我这样做似乎可以工作:

         using (var client = new WebClient())
        {

            var values = new NameValueCollection 
            { 
                { "userName", "userName" },
                { "password", "passwordGoesHere"}

            };
            byte[] responseArray = client.UploadValues(String.Format("{0}/Mobile/StartSession", serverAddress), values);
            Debug.WriteLine(String.Format("\r\nResponse received was :\n{0}\n", Encoding.ASCII.GetString(responseArray)));

        }

我试图找到在使用 WebClient 时如何在消息正文中传递数组(用于调用其他方法之一)。我遇到了这个解决方案:POST'ing arrays in WebClient (C#/.net)

看来解决方案实际上是在查询字符串中传递参数(而不是在消息正文中)。这似乎在任何情况下都有效,因为 MVC 控制器上的 HttpPost 方法仍在接收正确的信息。但是,另一种方法要求我将图像作为字节数组传递。这太大而无法在查询字符串中传递,因此调用失败。

所以我的问题是,使用我上面提供的代码,我怎样才能在其中添加数组。例如一个字节数组,还有一个字符串数组。

如果有人可以为我提供解决方案,将不胜感激,或者如果我的想法不正确,请告诉我。

谢谢

4

1 回答 1

1

而不是使用字节数组,也许您应该以与从文件输入从浏览器上传文件相同的方式发布文件。这样您将节省一些传输的字节,但您必须使用 HttpWebRequest 而不是 WebClient。有关此解决方案的更多信息在这里:

使用 HTTPWebrequest (multipart/form-data) 上传文件

您将字节上传为“multipart/form-data”内容类型。在服务器上,您将收到 Request.Files 集合中的字节流。

于 2012-06-06T10:45:57.663 回答