[英]How to use reflection to change HttpWebRequest headers in Powershell?
我需要使用受.NET限制的Powershell(v2)创建带有特定标头的HttpWebRequest。 我读了另一篇文章 , 文章是用C#完成的,但是我在Powershell中实现相同目标遇到困难
到目前为止,这是基于以上链接的内容:
$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的错误响应如下:
“使用” 5“参数调用” InvokeMember“的异常:”找不到方法'System.Net.WebHeaderCollection.ChangeInternal'。“
我应该如何调用“ ChangeInternal”? 我遇到的错误与错误的程序集版本有关吗?
InvokeMember
的最后一个参数是一个参数数组,而ChangeInternal
采用两个参数,即名称和值。 发生错误是因为反射无法找到一个接受单个参数的名为ChangedMember
的方法。 用这个:
$httpWebRequest.Headers.GetType().InvokeMember("ChangeInternal", $bflags, $null, $httpWebRequest.Headers, @("Host", "www.example.com"))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.