В моей программе я создаю пользовательскую HttpWebRequest
на основе следующей схемы JSON:
{
"Endpoint": "String",
"Method": "String",
"Headers": [
{
"Name": "String",
"Value": "String"
}
]
}
И код ниже просматривает каждый Header
и добавляет его к HttpWebRequest
var request = (HttpWebRequest)WebRequest.Create(Endpoint);
foreach (var item in Headers)
{
request.Headers.Add(item.Name, item.Value);
}
Это работает для большинства пользовательских заголовков, но я столкнулся с проблемой установки заголовка ContentType
.Поскольку этот конкретный заголовок не может быть добавлен вышеуказанным способом, я разработал способ, используя Reflection
для установки свойства ContentType
request
.
public static void SetHeaderValue(this HttpWebRequest request, string headerName, string headerValue)
{
Type type = typeof(HttpWebRequest);
PropertyInfo prop = type.GetProperty(headerName);
if (prop != null)
{
prop.SetValue(request, headerValue);
}
}
Мой вопрос таков:используя Reflection
лучший способ приблизиться к этому, или даже безопасный способ приблизиться к решению этой проблемы?