我正在尝试使用POST请求发送Base64编码的数据,其中包含“+”字符。当我发送请求时,“+”被替换为空格。以下是代码:
我一直在追踪“query”变量,它带有“+”字符,但当我在嗅探器(Charles)中查看请求时,请求被发送时没有“+”符号。
例如,我正在尝试发送
public string POST(string url, string query)
{
HttpWebRequest hwrq = CreateRequest(url);
hwrq.CookieContainer = Cookies;
hwrq.Method = "POST";
hwrq.ContentType = "application/x-www-form-urlencoded";
byte[] data = Encoding.Default.GetBytes(query);
hwrq.ContentLength = data.Length;
hwrq.GetRequestStream().Write(data, 0, data.Length);
using (HttpWebResponse hwrs = (HttpWebResponse)hwrq.GetResponse())
{
using (StreamReader sr = new StreamReader(hwrs.GetResponseStream()))
{
return sr.ReadToEnd().Trim();
}
}
}
public HttpWebRequest CreateRequest(string url)
{
HttpWebRequest Request = (HttpWebRequest)WebRequest.Create(url);
Request.UserAgent = UserAgent;
Request.Accept = Accept;
Request.Headers.Add("Accept-Language", AcceptLang);
Request.AutomaticDecompression = DMethod;
return Request;
}
我一直在追踪“query”变量,它带有“+”字符,但当我在嗅探器(Charles)中查看请求时,请求被发送时没有“+”符号。
例如,我正在尝试发送
<...>zxJ+zZq<...>
但实际发送的是
<...>zxJ zZq<...>
我做错了什么?
提前感谢您的回答。