我想使用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。对不起我的英文。
答案 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);