如何使用System.Net.HttpWebRequest发送包含数据的请求

时间:2015-01-23 12:56:29

标签: c# httpwebrequest url-encoding

我想使用System.Net.WebRequest发送简单的GET请求。但是当我尝试发送包含“Space”字符的URL时,我遇到了问题。 我做了什么:

string url = "https://example.com/search?text=some words&page=8";
var webRequest = System.Net.WebRequest.Create(link) as HttpWebRequest;

如果我尝试使用此代码,则为webRequest.Address == "https://example.com/search?&text=some words&page=8"(#1)

我可以为UrlEncoded空间手动添加“%20”,但是“WebRequest.Create”对其进行解码,我再次(#1)。我该怎么办呢?

P.S。对不起我的英文。

2 个答案:

答案 0 :(得分:1)

尝试加号(+)而不是空格。同时放下第一个&符号(&);它仅用于非主要参数。如在

var url = "https://example.com/search?text=some+words&page=8";

答案 1 :(得分:1)

您应该使参数值“url-friendly”。要实现这一点,您必须使用HttpUtility.UrlEncode()“url-encode”值。这不仅修复了空间,还修复了许多其他危险的“怪癖”:

string val1 = "some words"; 
string val2 = "a <very bad> value & with specials!";
string url = "https://example.com/search?text=" + HttpUtility.UrlEncode(val1) + "&comment=" + HttpUtility.UrlEncode(val2);