我有一个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 Properties。
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
}
有人可以告诉我这是如何实现的吗?
由于
Sunil Jambekar
答案 0 :(得分:2)
听起来您想要添加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;
}
}
(您可能也想考虑区分大小写)