我试图写一个windows客户端应用程序,调用一个网站的数据。为了使安装最小化,我尝试只使用。net框架客户端配置文件中的dll。麻烦的是,我需要UrlEncode一些参数,有没有一个简单的方法来做到这一点,而不导入System.Web.dll,这不是客户端Pofile的一部分?
当前回答
下面是一个发送POST请求的例子,使用application/x-www-form-urlencoded内容类型正确编码参数:
using (var client = new WebClient())
{
var values = new NameValueCollection
{
{ "param1", "value1" },
{ "param2", "value2" },
};
var result = client.UploadValues("http://foo.com", values);
}
其他回答
有一个客户端配置文件可用的版本,System.Net.WebUtility类,在客户端配置文件System.dll中。这是MSDN链接:
WebUtility
System.Uri.EscapeUriString()对于某些字符可能会有问题,对我来说,它是字符串中的数字/磅“#”符号。
如果这对你来说是个问题,试试:
System.Uri.EscapeDataString() //Works excellent with individual values
下面是一个SO问题的答案,解释了两者的区别:
EscapeUriString和EscapeDataString的区别是什么?
并建议在任何方面使用Uri.EscapeDataString()。
下面是一个发送POST请求的例子,使用application/x-www-form-urlencoded内容类型正确编码参数:
using (var client = new WebClient())
{
var values = new NameValueCollection
{
{ "param1", "value1" },
{ "param2", "value2" },
};
var result = client.UploadValues("http://foo.com", values);
}
System.Net.WebUtility.HtmlDecode
你可以使用
Uri。EscapeUriString(参见http://msdn.microsoft.com/en-us/library/system.uri.escapeuristring.aspx)
推荐文章
- 如何从枚举中选择一个随机值?
- 驻留在App_Code中的类不可访问
- 在链式LINQ扩展方法调用中等价于'let'关键字的代码
- dynamic (c# 4)和var之间的区别是什么?
- Visual Studio: ContextSwitchDeadlock
- 返回文件在ASP。Net Core Web API
- 自定义HttpClient请求头
- 如果我使用OWIN Startup.cs类并将所有配置移动到那里,我是否需要一个Global.asax.cs文件?
- VS2013外部构建错误"error MSB4019: The imported project <path> was not found"
- 从另一个列表id中排序一个列表
- 等待一个无效的异步方法
- 无法加载文件或程序集…参数不正确
- c#中枚举中的方法
- 如何从字符串中删除新的行字符?
- 如何设置一个默认值与Html.TextBoxFor?