我发送帖子请求的其中一个网站在Post数据的末尾有一个&符号(&),与Post请求一起发送。
如何追加&使用HttpContent时,在Post Data的末尾?
以下是代码示例:
List<KeyValuePair<string, string>> postData = new List<KeyValuePair<string, string>>();
postData.Add(new KeyValuePair<string, string>("user", userid));
postData.Add(new KeyValuePair<string, string>("password", password));
HttpContent content = new FormUrlEncodedContent(postData);
HttpResponseMessage responseMessage = await client.PostAsync("https://www.site.com/login", content);
发送的发布数据需要如下所示:
username=324234&password=12345&
奇怪的是有一个&amp;在请求结束时,但没有请求失败。
请注意,这不是&amp;在'密码'字段的末尾。如果我要添加它,它将编码&amp ;. &amp;无论使用何种密码,都会随每次请求一起发送。
有什么想法吗?
答案 0 :(得分:1)
FormUrlEncodedContent
不支持此功能,但您可以随时添加最终的'&amp;'您自己并将结果作为StringContent
发送:
HttpContent content = await new FormUrlEncodedContent(postData)
.WithFinalAmpersandAsync();
...
static class HttpContentExtensions
{
public static async Task<HttpContent> WithFinalAmpersandAsync(
this FormUrlEncodedContent formUrlEncodedContent)
{
string content = await formUrlEncodedContent.ReadAsStringAsync();
return new StringContent(content + "&");
}
}