_webRequest is a HttpWebRequest instance, _headers is a WebHeaderCollection from the original HttpWebRequest. I am relaying headers from one request to another, as required by a third party application. Why do I have to write such terrible code?
foreach (var key in _headers.AllKeys) { // of course MS would have to fuck this up somehow var value = _headers[key]; Log.Debug(key + ": " + value); switch (key.ToUpper()) { case "ACCEPT": _webRequest.Accept = value; break; case "REFERER": _webRequest.Referer = value; break; case "USER-AGENT": _webRequest.UserAgent = value; break; case "TRANSFER-ENCODING": _webRequest.UserAgent = value; break; case "DATE": if (DateTime.TryParse(value, out dt)) _webRequest.Date = dt; break; case "IF-MODIFIED-SINCE": if (DateTime.TryParse(value, out dt)) _webRequest.IfModifiedSince = dt; break; case "CONTENT-LENGTH": int cl; if (Int32.TryParse(value, out cl)) _webRequest.ContentLength = cl; break; default: _webRequest.Headers.Add(key, _headers[key]); break; } }
It should be what I originally tried:
//_webRequest.Headers.Add(_headers);
This is precisely the sort of code that creates a great dissatisfaction within me when working with the .NET Framework.