如何使用WebClient将TextFile从Windows窗体上传到特定的URL?

时间:2015-06-22 12:04:46

标签: c# winforms webclient

我想通过“Post”将VisualStudio C#Windows窗体应用程序中的普通文本文件发送到带有WebClient的URL。 我的代码:

using(WebClient w = new WebClient())
{
   w.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
   string HtmlResult = w.UploadString(@"http://xxx/api/test", "Post", @"C:\Temp\T.txt");
}

这是我到目前为止所发现的。当我运行此代码时,我的web项目中的post方法被命中但是param是 null (这是可以理解的,因为它的数据类型是一个字符串,但是当我将文件地址更改为a时它也是null简单的字符串,如“test”)。

所以我真正的问题是我无法将文本数据发送到我的网址。

1 个答案:

答案 0 :(得分:1)

首先,您的ContentType应为“application / text”而不是“application / x-www-form-urlencoded”。

其次,此方法默认为HTTP / HTTPS的POST,因此请使用带有两个字符串参数UploadString(“destination Url”,“data”)的重载。如果您只是必须使用三个参数重载,则该方法应为“POST”而不是“Post”。

此方法不会为您读取文件,您需要添加代码以将文件内容读入字符串,然后将该字符串传递给UploadString方法的data参数。

我可能应该补充一点,在接收api中,您将从Request.InputStream对象中读取数据。与任何流一样,您将其读入字节数组并需要将其编码回字符串。您必须使用与将文件读取为字符串相同的编码。

流InputStream是一个单向只读流,因此在编码回字符串之前,您需要将其全部读取到字节数组中。