1

Webリクエストを行うためにサーバーに接続するために使用しているC#Windowsフォームアプリケーションがあります。私がする必要があるのは、ユーザーが設定を介して特定のプロパティを設定し、それらのプロパティを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
        }

誰かがこれをどのように達成できるか教えてもらえますか?

ありがとう

Sunil Jambekar

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 に答える