c# wup Post 带有 urlencoded 内容的请求
c# wup Post Request with urlencoded Content
我尝试使用 Post 数据执行 Post 请求,该请求是部分 url 编码的。
我有以下 Post要发送的数据:
p1=v1
p2=v2
p3=up1=uv1&up2=uv2
为了实现这个,我格式化了p3的值
p3=up1%3duv1%26up2%3duv2
然后我将所有内容写在一个字符串值中:
p1=v1&p2=v2&p3=up1%3duv1%26up2%3duv2
现在我有一个Post请求:
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
request.Method = "POST";
byte[] data = Encoding.UTF8.GetBytes(postData);
request.ContentType = "application/x-www-form-urlencoded";
request.Headers["ContentLength"] = data.Length.ToString();
using (Stream stream = await request.GetRequestStreamAsync())
{
stream.Write(data, 0, data.Length);
}
WebResponse response = await request.GetResponseAsync();
Stream streamResponse = response.GetResponseStream();
但目标 url 现在收到
p1=v1
p2=v2
P3=up1=uv1_up2=uv2
a _ 代替了 &
另外,尽管如此,我正在使用 UTF8 编码像 äüö 这样的字符被破坏了。
我尝试了几种编码(ASCII、iso-8859-1)但总是一样。
最后一个问题是,如何post一个url编码的字符串?
The final question is, how to post a urlencoded String ?
我无法重现您的问题。使用上面的客户端代码片段,我可以在服务器端接收到包含 &
的正确 post 数据。我创建了一个针对 .Net Framework 4.7 的 Web API 进行测试,Post()
方法代码如下:
public async Task<object> Post()
{
var kvs = await Request.Content.ReadAsFormDataAsync();
return kvs.AllKeys.Select(k => new { key = k, value = kvs[k] });
}
通过您的客户端代码片段,我可以收到正确的 return 值,如下图所示。我的 UWP 应用目标版本 16299。
所以你 post 字符串包含 &
的方式应该是正确的。您的问题可能是由您的服务器端引起的,如果您仍然有问题,请提供服务器端的详细信息。 Here 是您也可以参考的类似主题。
我尝试使用 Post 数据执行 Post 请求,该请求是部分 url 编码的。 我有以下 Post要发送的数据:
p1=v1
p2=v2
p3=up1=uv1&up2=uv2
为了实现这个,我格式化了p3的值
p3=up1%3duv1%26up2%3duv2
然后我将所有内容写在一个字符串值中:
p1=v1&p2=v2&p3=up1%3duv1%26up2%3duv2
现在我有一个Post请求:
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
request.Method = "POST";
byte[] data = Encoding.UTF8.GetBytes(postData);
request.ContentType = "application/x-www-form-urlencoded";
request.Headers["ContentLength"] = data.Length.ToString();
using (Stream stream = await request.GetRequestStreamAsync())
{
stream.Write(data, 0, data.Length);
}
WebResponse response = await request.GetResponseAsync();
Stream streamResponse = response.GetResponseStream();
但目标 url 现在收到
p1=v1
p2=v2
P3=up1=uv1_up2=uv2
a _ 代替了 & 另外,尽管如此,我正在使用 UTF8 编码像 äüö 这样的字符被破坏了。
我尝试了几种编码(ASCII、iso-8859-1)但总是一样。
最后一个问题是,如何post一个url编码的字符串?
The final question is, how to post a urlencoded String ?
我无法重现您的问题。使用上面的客户端代码片段,我可以在服务器端接收到包含 &
的正确 post 数据。我创建了一个针对 .Net Framework 4.7 的 Web API 进行测试,Post()
方法代码如下:
public async Task<object> Post()
{
var kvs = await Request.Content.ReadAsFormDataAsync();
return kvs.AllKeys.Select(k => new { key = k, value = kvs[k] });
}
通过您的客户端代码片段,我可以收到正确的 return 值,如下图所示。我的 UWP 应用目标版本 16299。
所以你 post 字符串包含 &
的方式应该是正确的。您的问题可能是由您的服务器端引起的,如果您仍然有问题,请提供服务器端的详细信息。 Here 是您也可以参考的类似主题。