1

我有一个 C# Windows 窗体应用程序,用于连接到服务器以发出 Web 请求。我需要做的是允许用户通过首选项设置某些属性并将这些属性动态添加到 WebRequest。

就像我有一个带有条目的配置文件一样 -->

<Properties>
        <Property name="User-Agent" value="Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)" />
        <Property name="KeepAlive" value="true" />
</Properties>

现在我想将值绑定到 WebRequest 属性。

Uri serverURL = new Uri("http://MyServer:8080/MyPage.jsp");
        HttpWebRequest wreq = WebRequest.Create(serverURL) as HttpWebRequest;
        XmlDocument xmldoc = new XmlDocument();
        xmldoc.Load(<Path of Config>);
        XDocument xDoc = XDocument.Parse(xmldoc.InnerXml);
        Dictionary<string, string> propdict = new Dictionary<string, string>();
        foreach (var section in xDoc.Root.Elements("Property"))
        {
            propdict.Add(section.Attribute("name").Value, section.Attribute("value").Value);
        }            

        string key = string.Empty, value = string.Empty;
        foreach (var item in propdict)
        { 
             //... add the properties to wreq
        }

有人可以让我知道如何实现吗?

谢谢

苏尼尔·詹贝卡

4

1 回答 1

3

听起来您想添加 http 请求标头,在这种情况下:

wreq.Headers.Add(headerName, headerValue);

然而!IIRC,许多标头都是特殊情况,例如它可能拒绝接受用户代理作为标头,而是坚持您设置:

wreq.UserAgent = userAgentString;
wreq.KeepAlive = setKeepAlive;

所以你可能需要:

foreach(var item in propdict) {
    switch(item.Name) {
        case "User-Agent":
            wreq.UserAgent = item.Value;
            break;
        case "KeepAlive":
            wreq.KeepAlive = bool.Parse(item.Value);
            break;
        // ... etc

        default:
            wreq.Headers.Add(item.Name, item.Value);
            break;
    }
}

(您可能也想考虑区分大小写)

于 2013-02-11T13:00:38.967 回答