如何使用 System.Net.HttpWebRequest 发送带有数据的请求
How to send a request with data using System.Net.HttpWebRequest
我想使用 System.Net.WebRequest 发送简单的 GET 请求。但是当我尝试发送包含 "Space" 字符的 URL-s 时遇到问题。
我做什么:
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 space 手动添加“%20”,但 "WebRequest.Create" 对其进行了解码,我又得到了 (#1)。我怎样才能做对?
P.S。对不起我的英语。
尝试使用加号 (+) 而不是 space。同时删除第一个和号 (&);它仅用于非主要参数。如
var url = "https://example.com/search?text=some+words&page=8";
你应该使参数值"url-friendly"。为此,您必须使用 HttpUtility.UrlEncode() "url-encode" 个值。这不仅修复了空格,还修复了许多其他危险 "quirks":
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);
我想使用 System.Net.WebRequest 发送简单的 GET 请求。但是当我尝试发送包含 "Space" 字符的 URL-s 时遇到问题。 我做什么:
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 space 手动添加“%20”,但 "WebRequest.Create" 对其进行了解码,我又得到了 (#1)。我怎样才能做对?
P.S。对不起我的英语。
尝试使用加号 (+) 而不是 space。同时删除第一个和号 (&);它仅用于非主要参数。如
var url = "https://example.com/search?text=some+words&page=8";
你应该使参数值"url-friendly"。为此,您必须使用 HttpUtility.UrlEncode() "url-encode" 个值。这不仅修复了空格,还修复了许多其他危险 "quirks":
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);