带有相同密钥的C#WebRequest Post Array

时间:2014-08-07 15:28:18

标签: c#

我需要将数据发布到REST服务,并且需要接受帖子数据,例如

profile=high&profile=low

我目前正在这样做:

Dictionary<string, string> postData = new Dictionary<string, string>();
postData.Add("source=", streamSource);
postData.Add("ipvs=", "false");
postData.Add("stream=", string.Empty);
postData.Add("output=", "high");
postData.Add("framerateDivider=", "1");
postData.Add("resolution=", "1");
postData.Add("profile=", "high");
postData.Add("&output=", "low");
postData.Add("&framerateDivider=", "1");
postData.Add("&resolution=", "1");
postData.Add("ipvsProfile=", "high");
postData.Add("ipvsTitle=", string.Empty);
postData.Add("ipvsDescription=", string.Empty);
postData.Add("ipvsTagName=", string.Empty);
postData.Add("ipvsTagValue=", string.Empty);

using (Stream stream = request.GetRequestStream())
{
    using (var writer = new StreamWriter(stream))
    {
        foreach (KeyValuePair<string, string> data in postData)
        {
            if (data.Key.StartsWith("&"))
            {
                writer.Write(data.Key.Substring(1), data.Value);
            }
            else
            {
                writer.Write(data.Key + data.Value);
            }
        }

        writer.Close();
    }

    stream.Close();
}

我从服务返回409冲突并查看它需要的日志缺少第二个配置文件密钥。

是否有其他方法可以使用WebRequest发布数据?

干杯。

2 个答案:

答案 0 :(得分:0)

不应该writer.Write(data.Key + "=" + data.Value);这很难说,因为我们不知道您的KeyValuePair是什么样的。

答案 1 :(得分:0)

我将字典更改为元组列表以避免重复键...这不是实际问题。 409是由于标题中的自定义Content-Type。