如何在HttpContent的末尾添加&符号(&)

时间:2014-01-28 23:24:40

标签: c# .net

我发送帖子请求的其中一个网站在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;无论使用何种密码,都会随每次请求一起发送。

有什么想法吗?

1 个答案:

答案 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 + "&");
    }
}