如何在 Powershell 中使用反射更改 HttpWebRequest headers?
How to use reflection to change HttpWebRequest headers in Powershell?
我需要使用受 .NET 限制的 Powershell (v2) 创建具有特定 headers 的 HttpWebRequest。我读了另一个 post,这是在 C# 中完成的,但我 运行 很难在 Powershell
中实现相同的目标
这是我目前根据上面的 link 得出的结果:
$httpWebRequest = [System.Net.HttpWebRequest][System.Net.WebRequest]::Create($url)
[System.Reflection.BindingFlags]$bflags = [Reflection.BindingFlags]"NonPublic" -bor [Reflection.BindingFlags]"Instance" -bor [Reflection.BindingFlags]"InvokeMethod"
$httpWebRequest.Headers.GetType().InvokeMember("ChangeInternal", $bflags, $null, $httpWebRequest.Headers, @{"Host" = "www.example.com"})
不幸的是,Powershell 的错误响应如下:
Exception calling "InvokeMember" with "5" argument(s): "Method 'System.Net.WebHeaderCollection.ChangeInternal' not found."
我应该如何调用“ChangeInternal”?我遇到的错误是否与错误的程序集版本有关?
InvokeMember
的最后一个参数是一个参数数组,ChangeInternal
有两个参数,名称和值。发生错误是因为反射找不到接受单个参数的名为 ChangedMember
的方法。使用这个:
$httpWebRequest.Headers.GetType().InvokeMember("ChangeInternal", $bflags, $null, $httpWebRequest.Headers, @("Host", "www.example.com"))
我需要使用受 .NET 限制的 Powershell (v2) 创建具有特定 headers 的 HttpWebRequest。我读了另一个 post,这是在 C# 中完成的,但我 运行 很难在 Powershell
中实现相同的目标这是我目前根据上面的 link 得出的结果:
$httpWebRequest = [System.Net.HttpWebRequest][System.Net.WebRequest]::Create($url)
[System.Reflection.BindingFlags]$bflags = [Reflection.BindingFlags]"NonPublic" -bor [Reflection.BindingFlags]"Instance" -bor [Reflection.BindingFlags]"InvokeMethod"
$httpWebRequest.Headers.GetType().InvokeMember("ChangeInternal", $bflags, $null, $httpWebRequest.Headers, @{"Host" = "www.example.com"})
不幸的是,Powershell 的错误响应如下:
Exception calling "InvokeMember" with "5" argument(s): "Method 'System.Net.WebHeaderCollection.ChangeInternal' not found."
我应该如何调用“ChangeInternal”?我遇到的错误是否与错误的程序集版本有关?
InvokeMember
的最后一个参数是一个参数数组,ChangeInternal
有两个参数,名称和值。发生错误是因为反射找不到接受单个参数的名为 ChangedMember
的方法。使用这个:
$httpWebRequest.Headers.GetType().InvokeMember("ChangeInternal", $bflags, $null, $httpWebRequest.Headers, @("Host", "www.example.com"))