使用WebClient将数组作为邮件正文的一部分传递给后续操作

时间:2012-06-06 10:41:46

标签: c# model-view-controller post webclient

我正在编写一个需要对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方法仍在接收正确的信息。但是,另一种方法要求我将图像作为字节数组传递。这太大了,无法在查询字符串中传递,因此调用失败。

所以我的问题是,使用我上面提供的代码,我如何在那里添加数组。例如,一个字节数组,但也是一个字符串数组。

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

由于

1 个答案:

答案 0 :(得分:1)

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

Upload files with HTTPWebrequest (multipart/form-data)

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