Используя. NET HttpWebRequest, как мне добавить заголовок Range с одним номером? - PullRequest
0 голосов
/ 30 марта 2020

Я пытаюсь взаимодействовать с REST-интерфейсом , где есть именованный заголовок Range, который принимает одно значение, а не значения from и to. То есть, требуется: Range: dli-depth=1 не Range: dli-depth=0-1

Я могу использовать HttpWebRequest.AddRange () , чтобы добавить заголовок Range в мой HttpWebRequest, но независимо от того, какой вариант я выберу, я всегда заканчивается значением da sh справа от знака равенства. Данное устройство не принимает заголовок Range с значением da sh. Если я пытаюсь добавить Range в качестве пользовательского заголовка:

myRequest.Headers.Add("Range", $"dli-depth={depth}");

... я получаю это исключение:

System.ArgumentException: 'The 'Range' header must be modified using the appropriate property or method.

Как мне добавить это (возможно, нестандартное) Диапазон HTTP-заголовок в. NET?

1 Ответ

1 голос
/ 31 марта 2020

Поскольку у вас нестандартный заголовок, net не позволит вам добавить этот заголовок. Вы можете использовать следующие hack :

MethodInfo method = typeof(WebHeaderCollection).GetMethod
                        ("AddWithoutValidate", BindingFlags.Instance | BindingFlags.NonPublic);
HttpWebRequest request = (HttpWebRequest) WebRequest.Create(<your url>);
string key = "Range";
string val = $"dli-depth={depth}";
method.Invoke (request.Headers, new object[] { key, val });
...